6

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

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

除了延迟加载之外还会有其他影响吗,还是需要虚拟导航属性的主要功能?

4

2 回答 2

7

有两种效果。一种是延迟加载,如果属性不是virtual. 但是延迟加载并不总是你想要的。

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

您可以在此处了解有关变更检测的更多信息。

于 2013-02-09T04:15:13.213 回答
0

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

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

  1. 将要延迟加载的属性声明为虚拟属性。这些属性可以是任何实现 ICollection 的集合类型,也可以是表示 1/0..1 关系的引用。

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

请参阅MSDN 的“实体框架中的 POCO”帖子

于 2013-02-09T05:16:16.250 回答