Entity framework 实体框架POCO

Entity framework 实体框架POCO,entity-framework,entity-relationship,Entity Framework,Entity Relationship,在EntityFramework4.0中使用T4模板创建POCO会带来什么问题?为什么使用entity framework 4.0不创建POCO时会出现默认行为?您会丢失很多东西。“纯”POCO在ORM中的用途有限,因为它不会进行更改跟踪。换句话说,当您改变对象,然后将更改保存到上下文中时,您希望将更改的属性保存到数据库中。使用“纯”POCO,您可以通过基于快照的更改跟踪来实现这一点,这是相当低效的。您还可以使用运行时代理来实现这一点,它强制您将曲目属性设置为公共虚拟,这样您就不必再拥有“POC

在EntityFramework4.0中使用T4模板创建POCO会带来什么问题?为什么使用entity framework 4.0不创建POCO时会出现默认行为?

您会丢失很多东西。“纯”POCO在ORM中的用途有限,因为它不会进行更改跟踪。换句话说,当您改变对象,然后将更改保存到上下文中时,您希望将更改的属性保存到数据库中。使用“纯”POCO,您可以通过基于快照的更改跟踪来实现这一点,这是相当低效的。您还可以使用运行时代理来实现这一点,它强制您将曲目属性设置为公共虚拟,这样您就不必再拥有“POCO”。此外,使用代理意味着您不知道实例的真实运行时类型

您还将丢失一些便利属性,如
EntityState

“纯”POCO无法进行延迟加载。同样,您可以使用代理类型来解决这个问题,但是,如果您使用的是代理,那么您并没有真正的“纯”POCO


除此之外,在实体框架中使用POCO实体的需求比在其他一些ORM中要少。这是因为您总是可以使用LINQ将实体类型投影到POCO实例上,而不必首先具体化实体实例。因此,实体框架应用程序中始终可以使用“纯”POCO,即使您没有以这种方式映射实体。

使用非POCO进行单元测试也可以。对我来说没问题。我以为POCO T4模板可以为你创建代理。难道IPoco不需要EntityState吗?我认为OP的问题真的很有趣。。我很想看到更多关于这个话题的讨论。IPOCO很好,但它与POCO不同。IMHO代理也不是真正的POCO,因为我的“POCO”不具备公共虚拟的所有功能。但我认为OP是在谈论而不是你的“POCO”。@itchi,POCO的创建方式不会改变我的答案。毕竟,如果你关心它是如何制作的,那么它就不是真正的“POCO”,是吗?