2016-10-11 64 views
0

首先使用EF代码“Association properties that are marked as “virtual” will by default be lazy-loaded”。实体框架:为什么“虚拟”默认会被延迟加载?

是按照惯例还是背后有逻辑?

+0

你有阅读文档关于虚拟方法? https://msdn.microsoft.com/en-GB/library/9fkccyh4.aspx – Basic

+0

是的,当然和? –

+0

对不起,我认为这很明显...... EF使用代理类来跟踪状态并执行其他魔法。通过将属性设置为虚拟,您可以将自定义实现添加到触发加载的属性中。从文档的第一句'virtual关键字用于修改方法,属性,索引器或事件声明并允许它在派生类中被覆盖。' – Basic

回答

1

通过将该属性标记为虚拟允许EF在派生的代理类中覆盖它,它会环绕对象。这允许EF在重写的属性中添加加载挂钩,并启用延迟加载行为。

微软文档:https://msdn.microsoft.com/en-us/data/jj574232.aspx

默认实体框架的行为,如果可能的话,要延迟加载相关型号对象。这可以通过简单地关闭延迟加载的情况下被禁用,或单个实体(见上面的链接):

例如,要禁用延迟加载上下文:

this.Configuration.LazyLoadingEnabled = false; 
+0

所以这是一个约定...一个有逻辑解释但仅仅因为EF这样工作的约定。很高兴知道... –

相关问题