【问题标题】:Entity Framework - related ICollection getting materialized into HashSet实体框架 - 相关的 ICollection 被具体化为 HashSet
【发布时间】:2011-04-07 04:26:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    • POCO 类是公共的、非密封的和非抽象的
    • 所有持久属性(带有 getter 和 setter)被标记为虚拟

    【讨论】:

    • 哎呀,我刚刚再次检查了这个类,发现这个集合没有被标记为虚拟 :) 谢谢你的提示!
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2021-05-03
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多