通过在实体框架4.0中使用T4模板创建POCO可以解决什么?使用实体框架4.0 而不是创建POCO时,为什么是默认行为?
答案 0 :(得分:3)
你失去了很多东西。 “纯”POCO在ORM中的用途有限,因为它不会进行更改跟踪。换句话说,当您改变对象然后将更改保存到上下文时,您希望将更改的属性保存到数据库中。使用“纯”POCO,您可以使用基于快照的更改跟踪来执行此操作,这非常低效。您也可以使用运行时代理执行此操作,这会强制您创建跟踪属性public virtual
,因此可以说您不再拥有“POCO”。此外,使用代理意味着您不知道实例的真实运行时类型。
你也失去了一些便利属性,如EntityState
。
“Pure”POCO无法进行延迟加载。同样,您可以使用代理类型来解决这个问题,但是,如果您使用代理,那么您实际上并没有“纯粹的”POCO。
除此之外,在实体框架中使用POCO实体的需求比在其他一些ORM中少。这是因为您始终可以使用LINQ将实体类型投影到POCO实例上,而无需首先实现实体实例。因此,“纯”POCO始终可以在Entity Framework应用程序中使用,即使您没有碰巧以这种方式映射您的实体。