2012-05-28 32 views
1

在n層方案中,數據層應如何更新EF 4.3中對象的List屬性?在實體框架4.3中更新對象的列表屬性 - 代碼優先,N層

比方說,我們有這個類:

public class Foo 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Bar> Bars { get; set; } 
} 

這種運作良好,儘可能保存/更新編號和名稱,但酒吧屬性被忽略。

protected void SaveChanges(Foo foo) 
{ 
    this.Database.Entry<Foo>(foo).State = GetState(foo); 
    this.Database.SaveChanges(); 
} 

由於原來的背景下(即檢索美孚)在內存不再,應該如何在數據層處理保存更新到酒吧財產? EF如何知道哪些酒吧項目已被刪除,哪些已被更新,哪些已被添加?

注:我可以遍歷每個酒吧項目,並將其與原來的比較,但我猜EF不應該這樣工作。這似乎乏味和不正確。

+0

有壞消息,你知道哪一個? (提示:這與你最後一張紙條有關。) – Slauma

+0

Yuck。我真的希望事實並非如此。 –

回答

2

EF如何知道已刪除哪些酒吧項目,哪些已更新 ,哪些已添加?

如果你會自己寫下持久性,它應該如何知道變化?我想你會選擇以下兩個選項之一:

  • 你會查詢數據庫的當前狀態,並與收到的狀態比較找到發生了什麼變化
  • 你會添加一些輔助領域的課程,讓客戶告訴你發生了什麼變化

在這兩種情況下,你都會使用關於更改的信息來生成正確的SQL。

EF僅解決最後一點(SQL生成),但您仍然有責任告訴它發生了什麼變化。

相關問題