我在我的项目中使用 EntityFramework POCO + 代理 + 延迟加载。今天,我很惊讶地看到该类Transaction
将其相关集合Rows
物化为HashSet
(而不是EntityCollection
)。我需要EntityCollection
跟踪集合中的更改。
public class Transaction
{
public virtual ICollection<TransactionRow> Rows { get; set; }
}
但是,其他实体类将其相关集合具体化为EntityCollection
.
我正在加载Transaction
through ObjectQuery
,所以它应该在上下文中。对象的代理也被创建。
谁能告诉 - 实体框架如何决定使用什么 - HashSet 或 EntityCollection?为什么有些东西会变成 HashSet?