gpt4 book ai didi

entity-framework - 对Entity Framework 4.1的生成器感到困惑

转载 作者:行者123 更新时间:2023-12-04 18:13:46 25 4
gpt4 key购买 nike

我正在针对遗留数据库评估项目的 Entity Framework 。
该数据库的设计相当好,并且已经决定我们将使用数据库优先方法。
该应用程序将基于WinForms,但我想提前计划并考虑ASP.Net,并且管理层可能会在某个时候要求它,并且我想重用DAL。

现在,我了解了Entity Framework提供了几种生成实体对象的方式:

  • 源自EntityObject的对象
  • POCO(ObjectContext)
  • POCO(DbContext)
  • 自我跟踪实体(STE)

  • 我一直在尝试比较这三种方法,到目前为止,我已经发现了这一点。

    EntityObject T4模板是其中最丰富的模板。
    例如,它将来自实体模型的注释放入实体的每个类和每个属性之上的XMLDoc注释中,就代码可维护性而言,这是相当不错且有用的。
    其他生成器都没有开箱即用的支持(尽管我知道可以修改T4模板,但是显然需要做一些工作)。
    另一方面,DbContext API更好一些。

    EntityObject派生类型提供了一个事件,您可以在实体属性更改时将其挂接到该事件,这对于实现业务逻辑很有用。

    我知道POCO对此很自然,但是每次模型更改时,T4生成器都会覆盖我的所有更改。
    当然,生成的POCO是局部类,但是据我所知,不可能覆盖已经在局部类中定义的属性,因此我不确定如何在它们中实现业务逻辑吗?

    很多人似乎讨厌EntityObject派生的类,而更喜欢POCO方法,但是似乎我失去了很多有用的功能,这些功能是EntityObjects通过POCO路线提供的。
    考虑到对POCO对象的普遍强烈偏爱,因此我可能会误解我的问题。

    最后,哪种生成器最适合ASP.Net环境?我担心我的实体更改停止跟踪吗?自我跟踪实体在这种情况下是否更有用,还是仅对Web服务有值(value)(我可能不会使用)?

    提前谢谢了。

    最佳答案

    如果要使用EF 4.1,则只能选择DbContext Generator。所有其他生成器(POCO,EntityObject和STE)都用于ObejctContext API(EF 4.0)。我描述了生成器here之间的差异。

    在您的情况下,EntityObject生成器可用于WinForms,但对于ASP.NET解决方案来说比较麻烦,因为ASP.NET应用程序是分离的方案,因此POCO更好,因此POCO更好-无论如何,您都必须处理ASP.NET中的更改跟踪。

    STEs的用途已在here中进行了描述,但它们在WinForm中不是很有用,在WinForm中您可以直接使用附加的实体,也可以在ASP.NET中在 View 状态之间的请求之间使用demands to store them

    您要直接放入实体中的任何业务逻辑都必须在T4生成器中进行编码,否则在每次生成后都会被覆盖。您提到的基于EntityObject的生成器的每个功能都可以在POCO/DbContext生成器中实现。

    关于entity-framework - 对Entity Framework 4.1的生成器感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725127/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com