Entity framework 对实体框架4.1的生成器感到困惑
我正在根据遗留数据库评估项目的实体框架。 数据库设计得相当好,我们已经决定使用数据库优先的方法。 该应用程序将基于WinForms,但我希望提前计划并考虑ASP.Net,以及管理层可能在某个时候要求它,我希望重用DAL 现在,我了解到实体框架提供了几种生成实体对象的方法:Entity framework 对实体框架4.1的生成器感到困惑,entity-framework,Entity Framework,我正在根据遗留数据库评估项目的实体框架。 数据库设计得相当好,我们已经决定使用数据库优先的方法。 该应用程序将基于WinForms,但我希望提前计划并考虑ASP.Net,以及管理层可能在某个时候要求它,我希望重用DAL 现在,我了解到实体框架提供了几种生成实体对象的方法: 从EntityObject派生的对象 POCO(对象上下文) POCO(数据库上下文) 自跟踪实体(STE) 我一直在尝试比较这三种方法,到目前为止我已经发现了这一点 EntityObject T4模板是其中最丰富的模板。
- 从EntityObject派生的对象
- POCO(对象上下文)
- POCO(数据库上下文)
- 自跟踪实体(STE)
非常感谢。如果您想使用EF 4.1,您的选项只有DbContext生成器。所有其他生成器(POCO、EntityObject和STE)都适用于ObejctContext API(EF 4.0)。我描述了发电机之间的区别 在您的情况下,EntityObject generator可以用于WinForms,但对于ASP.NET解决方案来说,它会很麻烦,因为ASP.NET应用程序是分离的,所以POCO更好—无论如何,您都必须在ASP.NET中处理更改跟踪 STE的用途已经描述,但它们在WinForm中不是很有用,在WinForm中,您可以直接使用附加的实体,或者在ASP.NET中,它们可以在视图状态的请求之间进行连接
您想要直接放入实体的任何业务逻辑都必须在T4 generator中进行编码,否则它将在每次生成后被覆盖。您提到的基于
EntityObject
的生成器的每个功能也可以在POCO/DbContext生成器中实现。谢谢。那很有帮助。“任何您想直接放入实体的业务逻辑都必须在T4生成器中编码”,您的意思是我需要修改T4模板,使其生成类似于EntityObjects的[Property]更改的事件吗?我曾经对T4做过一些改变,但我不能说这是一次有趣的经历。考虑到这一点,我很惊讶没有看到更多的EF T4脚本共享,而只有MS脚本。此外,我担心这些事件可能不会在ASP.Net环境中引发,是吗(当数据发布回服务器时)?“任何要直接放入实体的业务逻辑都必须在T4 generator中进行编码,否则在每次生成后都会被覆盖”@Bobson:你读过问题了吗?我们正在讨论生成属性中的附加逻辑。仍然存在部分类甚至部分方法没有帮助的情况。我有,但我错过了关于重写它创建的属性的部分。我道歉。