我在某些操作中通过反射使用类属性,因此在使用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;}
}
答案 0 :(得分:7)
看起来您正在寻找DbReferenceEntry<TEntity, TProperty>.IsLoaded或DbReferenceEntry.IsLoaded财产:
if (context.Entry(oCustomer).Reference(e => e.Location).IsLoaded)
或
if (context.Entry(oCustomer).Reference("Location").IsLoaded)
对于集合类型导航属性,只需使用.Collection
代替.Reference
。