【问题标题】:Are EntityFramework generated Entity Persistence IgnoranceEntityFramework是否生成Entity Persistence Ignorance
【发布时间】:2010-04-20 17:28:03
【问题描述】:

所以我开始研究 EF 和 POCO。

据我了解,EF生成的实体不是纯POCO,因为它继承自EntityObject。

但他们是 PI 吗?在我看来,他们没有任何持久性意识,或者 EntityObject 中有什么东西让他们成为 PI?

【问题讨论】:

    标签: c# .net entity-framework poco


    【解决方案1】:

    在 C# 4.0 / .NET 4 中,实体框架支持 POCO 作为实体,因此支持所谓的持久性无知。在以前的版本中,这不受支持。

    在瑞士 Techdays 网站上,您可以找到 2 Sessions on Entity Framework 4.0 with Jeff Derstadt,并提供英文视频和幻灯片:

    【讨论】:

    • 那么EF生成的Entity是Persistence Ignorance吗?
    • @pdiddy:不,默认情况下不是,但在 EF 4.0 中,您可以使用 PI 实体。观看“深入了解”视频以了解更多信息。
    • 是什么让实体不是 PI?
    • 因为在 .NET 3.5 中,它不能是 POCO。它必须从 EntityObject 派生并具有花哨的属性,例如: [global::System.Data.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName="MyModel", Name="MyEntity")] [global::System.Runtime.Serialization.DataContractAttribute( IsReference=true)] [global::System.Serializable()] 公共部分类 MyEntity : global::System.Data.Objects.DataClasses.EntityObject
    【解决方案2】:

    实体框架独立于持久性,因为可以为备用数据存储编写自定义实体框架提供程序。例如,这里是为 Oracle 编写的示例提供程序。

    http://code.msdn.microsoft.com/EFOracleProvider

    至于 POCO 支持,我相信在支持 POCO 的 Framework 4.0 中情况有了很大改善。不过我可能有这个错误,因为我对这个自己有点陌生。

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多