我有一个代码,必须遍历数据库中的每个项目,然后解密它们撤回的内容。我被告知延迟加载是一个很好的方法,但我甚至不知道它是什么。我读了它,但我还不清楚。以下是带来我需要的所有项目的代码。我如何延迟加载它以免它对系统造成错误?
var potentialNumbers = _db.Owners.Where(x => x.UNQ4.Equals(submittedUNQ.Substring(submittedUNQ.Length - 4))).ToList().Select(o => o.UNQ).ToList();
答案 0 :(得分:0)
默认情况下,实体框架中的延迟加载处于启用状态。你不能强迫某些东西被懒散地加载#39;。你所能做的只是关闭延迟加载(顺便说一下,它实际上并不是真正的加载,而是“没有加载”#39;)。所以答案是你不能。实际上,正如评论所指出的,如果Owners
类具有导航属性,例如,
public class Owners{
public string UNQ4 {get;set;}
public virtual OtherClass NavigationProperty {get;set;}
}
然后,当您执行NavigationProperty
等查询时,null
属性的值最初为var owners = _db.Owners.First()
。之后,当您的程序调用{{1}}访问其owners
(如NavigationProperty
)时,只有这样才能访问数据库以获取相关的owners.NavigationProperty.Name
数据
延迟加载有效无法加载导航属性,直到/如果需要。好参考:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx