簡體   English   中英

實體框架投影或

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM