我在项目中使用EntityFramework POCO +代理+延迟加载。今天,我非常惊讶地看到班级Transaction
将其相关集合Rows
具体化为HashSet
(而不是EntityCollection
)。我需要EntityCollection
来跟踪集合中的更改。
public class Transaction
{
public virtual ICollection<TransactionRow> Rows { get; set; }
}
但是,其他实体类的相关集合已实现为EntityCollection
。
我正在加载Transaction
到ObjectQuery
,因此它应该在上下文中。还创建了对象的代理。
任何人都可以告诉 - 实体框架如何决定使用什么 - HashSet或EntityCollection?为什么有些东西会成为HashSets?
答案 0 :(得分:2)
只有满足以下两个条件时才会创建更改跟踪代理: