[英]Entity framework projection or
假设我有使用EF Model First方法设计的Db现有应用程序。 我有Users
表,当客户端代码尝试从Users
表中读取条目时,DAL逻辑将EF实体投影到普通对象(这只是简单的C#类,我们将其称为UserEntry类)。
现在,我应该添加Update方法,该方法需要UserEntry类。 因此,我只是想知道如何跟踪UserEntry类中的哪些字段已更改?
当然,我可以保存所有数据,但是我没有这种方法。
我可以完全重构现有解决方案,甚至可以删除UserEntry类。 我应该选择哪种方法? 使用DbContext生成器生成POCO类,或者使用EF Power Tools生成POCO类,然后转到“代码优先”方法?
我不知道您使用的是什么版本的EF,所以我假设您可以使用DbContext,如下所示:
public class YourContext : DbContext
{
public DbSet<User> Users {get;set;}
}
首先,您使用这种方法加载用户,以便DbContext跟踪它:
YourContext db = new YourContext();
public User Get(int userId)
{
return db.Users.Find(userId);
}
现在它在内存中,您可以对返回的对象进行操作。 完成对它的干预后,您只需致电:
db.SaveChanges()
并且它将保存跟踪的所有更改,而无需特殊的Update方法。
但是,如果您正在使用断开连接的实体(网站等),则需要添加其他行,以告知DbContext当实体超出跟踪范围时,该实体已更改:
public void Update(User user)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
那几乎就是您所需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.