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

时间:2010-01-13 12:11:19

标签: entity-framework entity-framework-4

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

2 个答案:

答案 0 :(得分:6)

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

EntityObject作为父级可以优于所谓的“POCO”(通常是代理库,而不是“普通”对象),因为实体的运行时类型是您期望的确切类型,而不是运行时生成的子类型。

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

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

顺便说一下,我并没有试图建议使用代理没有优势;我只想回答你关于EntityObject的优点是什么的问题。

答案 1 :(得分:0)

我认为唯一的好处是设计师的支持。使用非poco实体时无法找到任何其他好处。