c# – Entity Framework 5动态代理延迟加载:每次都访问空导航属性命中数据库吗?

This州:

Once an entity has been loaded, any further queries for the entity will load it directly from the Object State Manager, whether you are using lazy loading or eager loading.

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

我是否正确地假设如果我尝试使用来自根实体代理的导航属性来延迟加载实体(或集合)并且它在数据库中不存在 – 因此返回null或空集合 – 所有后续尝试从同一个根实体延迟加载同一个实体总会导致数据库命中?

最佳答案 不,它不会. DbCollectionEntry中的IsLoaded属性< TEntity,TElement>和DbReferenceEntry< TEntity,TProperty>用于确定是否需要加载,实际值(无论是否为空)是无关紧要的.

点赞