[英]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.