不将 Entity Framework (v4) 实体的导航属性标记为虚拟会有什么影响?
如果我不使用延迟加载,但忽略了正确的预加载,那么在访问(未加载)属性时会发生什么?
除了延迟加载之外还会有其他影响吗,还是需要虚拟导航属性的主要功能?
不将 Entity Framework (v4) 实体的导航属性标记为虚拟会有什么影响?
如果我不使用延迟加载,但忽略了正确的预加载,那么在访问(未加载)属性时会发生什么?
除了延迟加载之外还会有其他影响吗,还是需要虚拟导航属性的主要功能?
有两种效果。一种是延迟加载,如果属性不是virtual
. 但是延迟加载并不总是你想要的。
二是变化检测。如果您使用纯 POCO 或使用代理但不创建属性virtual
,则更改检测变得更加复杂。
您可以在此处了解有关变更检测的更多信息。
如果您想知道 POCO 对象是否支持延迟加载,那么我想您会很高兴知道您也可以使用 POCO 获得延迟加载。
为了获得 POCO 实体的延迟加载支持,您需要做两件事:
将要延迟加载的属性声明为虚拟属性。这些属性可以是任何实现 ICollection 的集合类型,也可以是表示 1/0..1 关系的引用。
在上下文中启用延迟加载