6

我在我的项目中使用 EntityFramework POCO + 代理 + 延迟加载。今天,我很惊讶地看到该类Transaction将其相关集合Rows物化为HashSet(而不是EntityCollection)。我需要EntityCollection跟踪集合中的更改。

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

但是,其他实体类将其相关集合具体化为EntityCollection.

我正在加载Transactionthrough ObjectQuery,所以它应该在上下文中。对象的代理也被创建。

谁能告诉 - 实体框架如何决定使用什么 - HashSet 或 EntityCollection?为什么有些东西会变成 HashSet?

4

1 回答 1

2

只有满足这两个条件时才会创建更改跟踪代理:

  • POCO 类是公共的、非密封的、非抽象的
  • 所有持久化的属性(带有 getter 和 setter)都被标记为虚拟的
于 2010-09-03T17:07:17.107 回答