0

比方說,我已經有了使用EF Model First方法設計的Db的現有應用程序。我有Users表,當客戶端代碼嘗試從Users表中讀取條目時,表DAL邏輯將EF實體轉換爲普通對象(它們只是簡單的C#類,我們稱它爲UserEntry類)。實體框架投影或

現在我應該添加更新方法,它需要UserEntry類。所以我只是想知道如何跟蹤UserEntry類中更改的字段?

當然我可以保存所有的數據,但我沒有這樣的做法。

我可以完全重新考慮現有的解決方案,我甚至可以刪除UserEntry類。我應該選擇什麼方法?使用DbContext生成器生成POCO類,或者例如使用EF Power Tools並轉到Code First方法?

+0

爲什麼不讓Entity Framework處理?這就是EF Code First ORM抽象的關鍵。 – Tejs

+0

閱讀有關EF中的自我跟蹤實體的信息 – 2012-05-04 15:48:13

+0

@Tejs我想幹淨而簡單的類,我可以輕鬆地操作並且沒有性能問題(http://stackoverflow.com/questions/7587232/entity-framework-projection-into-class-是-快於選擇-EF-POCO對象)。那麼你是否打算使用CF?在這種情況下,我應該將數據庫反轉回 –

回答

0

我不知道你使用的是什麼版本的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() 

它會保存任何被跟蹤的變化,不需要特殊的更新方法。

然而,如果你與斷開連接的實體(網站,例如)工作,你需要添加額外的行會告訴的DbContext該實體變更時,它是超出跟蹤範圍:

public void Update(User user) 
{ 
    db.Entry(user).State = EntityState.Modified; 
    db.SaveChanges(); 
} 

這幾乎所有你需要的。