【问题标题】:How important is EntityObject?EntityObject 有多重要?
【发布时间】:2012-02-17 14:05:50
【问题描述】:

我正在尝试创建用于测试目的的实体模型。我为此找到了许多代码生成器,例如:

http://visualstudiogallery.msdn.microsoft.com/a850e686-df08-4245-b0bb-5872654285c9

http://visualstudiogallery.msdn.microsoft.com/d2aa9e9a-1314-4a96-8365-81771b17c597

但是,我注意到,与默认的 Microsoft Entity Framework 生成器不同,实体类不是从 EntityObject 类派生的!

这有什么缺点吗?无论如何,EntityObject 类的优点是什么?我检查了它的文档,没有看到任何有用的功能,如果没有就无法实现!

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    这就是重量级实体和 POCO 实体之间的区别。重量级实体源自EntityObject,并与 EF 紧密耦合——实体并非无知的持久性。 POCO 实体只是普通的 .NET 类,与持久性没有任何关系(本例中为 EF)。

    基于EntityObject 的实体是“聪明的”——因为它们知道 EF 的存在,它们有时在某些情况下更易于使用,但在其他情况下更难使用(尤其是分离场景)。趋势是使用自 EF 4.0 起可用的 POCO。

    【讨论】:

    • 你能给我举例说明基于 EntityObject 的实体有多聪明,以及它们有多难吗?!
    • 另外,EntityObject 类中还有我需要的东西,即实体的状态(附加、分离等),这在 POCO 对象中是否可行?!
    • 实体知道其状态的事实是“聪明”的示例,另一个示例是“参考”属性和 EntityCollection 类型的导航属性,为您提供了更多选项来有效地使用导航属性。更难的例子是你想要实现持久性无知的任何事情 - 包括测试。
    • 可以获取 POCO 的状态,但您必须使用通过 ObjectContext 实例访问的 ObjectStateManager
    • 非常感谢。所以从你的回答来看,EntityObject 似乎比 POCO 更有优势,那么为什么趋势会转向使用 POCO?!
    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 2011-07-07
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2010-11-21
    • 2010-09-12
    • 2012-07-21
    相关资源
    最近更新 更多