实体框架延迟加载问题



我面临一个问题。运行select语句后,我将惰性加载设为false。在这种情况下,引用对象为null。但当调试我的代码时,一切都很好。引用被正确加载。如果我把等待时间放在bl.LazyLoading(false(之前,那么它也有效。是否有任何方法可以检测引用是否已加载?我必须等到引用加载。他们还有更好的主意吗?我对使用include((或reference((方法不感兴趣。

using (var bl = new BusinessLayer<T>())
{
bl.LazyLoading(true);
var list = bl.GetAll();
//wait
bl.LazyLoading(false);
if (list.Any())
{
System.Web.HttpContext.Current.Cache.Insert(key, list, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);
}
else
{
_logger.WriteInfo(String.Format("{0} list is empty.", key));
throw new Exception(String.Format("{0} list is empty.", typeof(T).Name));
}
}

实体框架有4种不同的方法来实现延迟加载机制:

  1. 使用include方法
  2. 虚拟集合为实体类
  3. Select((方法
  4. Entry((和Load((方法

方法3和4仍将加载可能的相关实体;

您可以在此处阅读更多详细信息:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113(.aspx

最新更新