实体框架4.0:为什么会使用代码生成的EntityObjects而不是POCO对象?

sen*_*nfo 4 entity-framework entity-framework-4

除了更快的开发时间(Visual Studio 2010 beta 2没有用于构建我知道的POCO实体对象的T4模板),默认情况下使用Entity Framework创建的传统EntityObject实体是否有任何优势?如果Microsoft提供用于构建POCO对象的T4模板,我试图找出为什么有人想要使用传统方法.

Cra*_*ntz 6

看来,你在同一时间问两个问题.仅代码与模型优先和EntityObject父类型与任意父类型.无论父类型如何,您都可以通过模型优先获得设计器支持.除了设计器支持,您还可以使用模型优先的预编译视图.这可以显着提高性能.

EntityObject作为父母可以在所谓的"波苏斯"(通常是代理基地,而不是"普通"对象)的优势,因为你的实体的运行时类型是确切的类型,你期望的,而不是运行时生成的亚型.

此外,与其他支持LINQ的ORM不同,实体框架具有丰富的LINQ支持,允许您投影真正的 POCO类型.因此,可以构建真正的持久性无知的演示,而无需关心实体的基本类型.您不会受到ORM黑盒中出现的任何类型的困扰.

EntityObject允许持久保存到数据库的私有属性.使用代理类型要求这些属性至少受到保护且必须是虚拟的.因此,EntityObject可以允许更好的封装.

顺便说一句,我并不是想建议使用代理没有优势; 我只想回答你关于它的优点的问题EntityObject.