6

我在我的項目中使用EntityFramework POCO +代理+延遲加載。今天,我很驚訝地發現類Transaction的相關集合Rows實現爲HashSet(而不是EntityCollection)。我需要EntityCollection來跟蹤收藏中的更改。實體框架相關的ICollection實現到HashSet

public class Transaction 
{ 
    public virtual ICollection<TransactionRow> Rows { get; set; } 
} 

但是其他實體類將其相關集合實現爲EntityCollection

我正在通過ObjectQuery加載Transaction,所以它應該在上下文中。該對象的代理也被創建。

任何人都可以告訴 - 實體框架如何決定使用什麼 - HashSet或EntityCollection?爲什麼有些東西變成HashSets?

回答

2

變化跟蹤代理創建只有當這兩個條件都滿足:

  • POCO類是公共的,非密封和非抽象
  • 所有持續性(與getter和setter)是標記爲虛擬
+0

Ouch,我剛剛檢查了班,並意識到收集沒有標記爲虛擬:)謝謝你的提示! – Jefim 2010-09-13 08:15:20