entity-framework - Entity Framework - 相关的 ICollection 被物化为 HashSet

标签 entity-framework entity-framework-4 poco hashset entitycollection

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

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

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

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

谁能告诉 - Entity Framework 如何决定使用什么 - HashSet 或 EntityCollection?为什么有些东西变成了 HashSets?

最佳答案

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

  • POCO 类是公开的、非密封的和非抽象的
  • 全部 持久属性(带有 getter 和 setter)被标记为虚拟
  • 关于entity-framework - Entity Framework - 相关的 ICollection 被物化为 HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624701/

    相关文章:

    c# - 在 Entity Framework 中按子项排序不返回排序列表

    c# - MVC 和存储库模式数据效率

    entity-framework - 使用 Entity Framework 将两个相关表连接成一个实体

    asp.net-mvc-2 - Entity Framework 4 CTP 4/CTP 5 通用存储库模式和可单元测试

    c# - Entity Framework Skip 方法运行速度很慢

    c# - dotnet-ef 与 net50 不兼容

    c# - EF7(核心)中同一个表的多个关系

    asp.net-mvc - 具有单例 DbContext 的自定义 RoleProvider 可能与 MVC3 网站中的 PerRequest DbContext 冲突

    c# - 在 C# 中检测可序列化数据类中的更改

    .net - Entity Framework 4.0 中的分层架构