实体框架虚拟属性

时间:2013-02-09 03:58:24

标签: c# entity-framework entity-framework-4

为Entity Framework(v4)实体标记虚拟导航属性有什么影响?

如果我不使用延迟加载,但忽略了正确的加载,那么在访问(未加载)属性时会发生什么?

是否会在延迟加载之外产生任何其他影响,或者是需要虚拟导航属性的主要功能?

2 个答案:

答案 0 :(得分:7)

有两种效果。一个是延迟加载,如果属性不是virtual,则无法正常工作。但延迟加载并不总是你想要的。

第二个是变化检测。如果您正在使用纯POCO或使用代理但未创建属性virtual,则更改检测变得更加复杂。

您可以详细了解更改检测here

答案 1 :(得分:0)

如果您想知道POCO对象是否支持延迟加载,那么我想您很高兴知道您也可以通过POCO获得延迟加载。

为了获得POCO实体的延迟加载支持,您需要做两件事:

  1. 声明要以懒惰方式加载的属性。这些属性可以是实现ICollection的任何集合类型,也可以是表示1 / 0..1关系的引用。

  2. 在上下文中启用延迟加载

  3. 请参阅MSDN's "POCO in the Entity Framework" post