【问题标题】:Why are entity framework entities partial classes?为什么实体框架实体是部分类?
【发布时间】:2017-03-06 19:41:05
【问题描述】:

我最近开始使用实体框架,我注意到生成的实体是部分类。 那有什么用呢?我用谷歌搜索了一下,人们大多谈论验证,但我也可以在生成的实体上添加验证。

【问题讨论】:

  • 回到当 EF 没有代码优先模型生成时,能够创建另一个具有相同名称的部分类以具有 [NotMapped] 属性并且不会让它们被数据库吹走真是太好了更新更改会导致您的课程被更新并吹走您的更改。

标签: c# .net entity-framework


【解决方案1】:

出于同样的原因,partial 类通常存在,代码生成。

何时生成代码;您不希望您的其他方法/属性/任何东西被吹走,因此设计者将此类类标记为partial 以允许用户将其他代码放在不同的文件中。

在 Code-First 中,EF 的代码生成方面在很大程度上已经过时,因此创建的任何 EF 模型类都不需要partial

【讨论】:

    【解决方案2】:

    partial 被添加到生成的实体中以进行自定义。

    如果您希望将自己的方法添加到由代码生成器(包括 EF)生成的类中,最好将您的实现放在单独的文件中,这样您就不会冒丢失自定义设置的风险每次重新生成代码时。

    如果没有partial,希望自定义类的开发人员将不得不使用变通技术,例如应用Generation Gap 设计模式。

    【讨论】:

      【解决方案3】:

      将其标记为部分允许您将属性放入该类。
      例如,当您需要将 DB 生成的类标记为 Serializable 以便能够将其存储在 Session 对象中时(在平衡环境中使用 SQL server 模式时),它非常方便。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-13
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多