C# EntityFramework5动态代理延迟加载:每次访问null导航属性都会命中数据库吗?

C# EntityFramework5动态代理延迟加载:每次访问null导航属性都会命中数据库吗?,c#,entity-framework,entity-framework-5,C#,Entity Framework,Entity Framework 5,国家: 加载实体后,对该实体的任何进一步查询都将直接从对象状态管理器加载它,无论您使用的是延迟加载还是急切加载 如果我使用代理根实体的导航属性延迟加载实体,并且该可导航实体存在于数据库中,则对该可导航实体的所有后续调用都不会导致数据库命中,因为它已经加载 如果我尝试延迟加载一个实体(或集合),我的假设正确吗使用根实体代理中的导航属性,并且该属性在数据库中不存在(因此返回null或空集合),则所有后续尝试从同一根实体延迟加载同一实体的操作都会导致数据库命中?否,因为它已经加载了空集合值。否,它不会

国家:

加载实体后,对该实体的任何进一步查询都将直接从对象状态管理器加载它,无论您使用的是延迟加载还是急切加载

如果我使用代理根实体的导航属性延迟加载实体,并且该可导航实体存在于数据库中,则对该可导航实体的所有后续调用都不会导致数据库命中,因为它已经加载


如果我尝试延迟加载一个实体(或集合),我的假设正确吗使用根实体代理中的导航属性,并且该属性在数据库中不存在(因此返回null或空集合),则所有后续尝试从同一根实体延迟加载同一实体的操作都会导致数据库命中?

否,因为它已经加载了空集合值。

否,它不会加载。
DbCollectionEntry
DbReferenceEntry
中的
IsLoaded
属性用于确定是否需要加载,实际值(无论
null
与否)是无关的。

谢谢!查看了DbReferenceEntry的文档,希望我可以将IsLoaded设置为false以再次强制db命中,但看起来我做不到。