检查延迟加载 属性 是否已加载到 EF6 中

Check Lazy Load property has loaded in EF6

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

是否可以检查延迟加载 属性 是否已加载?禁用动态代理生成 (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;}
}

您似乎在寻找 DbReferenceEntry<TEntity, TProperty>.IsLoaded or DbReferenceEntry.IsLoaded 属性:

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

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

对于集合类型的导航属性,只需使用 .Collection 而不是 .Reference