实体框架POCO

rkr*_*ter 5 entity-relationship entity-framework

通过在实体框架4.0中使用T4模板创建POCO,可以放松一下?为什么使用实体框架4.0 创建POCO 时的默认行为?

Cra*_*ntz 3

你会失去很多东西。“纯”POCO 在 ORM 中的用途有限,因为它不会进行更改跟踪。换句话说,当您改变对象然后将更改保存到上下文时,您希望将更改的属性保存到数据库中。使用“纯” POCO,您可以通过基于快照的更改跟踪来完成此操作,但效率相当低。您还可以使用运行时代理来完成此操作,这会强制您创建轨道属性public virtual,因此可以说您不再拥有“POCO”。此外,使用代理意味着您不知道实例的真实运行时类型。

您还会失去一些便利的属性,例如EntityState.

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

最重要的是,与其他一些 ORM 相比,在实体框架中使用 POCO 实体的需要更少。这是因为您始终可以使用 LINQ 将实体类型投影到 POCO 实例上,而无需首先具体化实体实例。因此,“纯”POCO 在实体框架应用程序中始终可用,即使您不碰巧以这种方式映射实体。