检查Lazy Load属性已加载到EF6

时间:2016-06-06 06:18:27

标签: entity-framework-6 lazy-loading dynamic-proxy

我在某些操作中通过反射使用类属性,因此在使用DynamicProxy实例时,它会导致加载整个数据库。 (700多个课程相互关联)。

是否可以检查是否加载了延迟加载属性?在我的情况下,禁用动态代理生成(ProxyCreationEnabled = false)是不可用的。

Customer oCustomer = context.get(1);

if(oCustomer.Location.HasLoaded)
   do smt..

public class Customer
{
    public decimal? Id {get; set;}
    public virtual CustomerLocation Location{get; set;}
}

public class CustomerLocation
{
    public decimal? Id {get; set;}
    public string Detail {get; set;}
}

1 个答案:

答案 0 :(得分:7)

看起来您正在寻找DbReferenceEntry<TEntity, TProperty>.IsLoadedDbReferenceEntry.IsLoaded财产:

if (context.Entry(oCustomer).Reference(e => e.Location).IsLoaded)

if (context.Entry(oCustomer).Reference("Location").IsLoaded)

对于集合类型导航属性,只需使用.Collection代替.Reference