检查延迟加载 属性 是否已加载到 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
。
我在某些操作中通过反射使用 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
。