在布尔中延迟加载
Lazy loading in a bool
我有一个代码必须遍历数据库中的每个项目,然后解密他们撤回的内容。有人告诉我延迟加载是一种很好的方式,但我什至不知道它到底是什么。我仔细阅读了它,但我仍然不清楚。下面是带来我需要的每件物品的代码。我如何延迟加载它才不会导致系统故障?
var potentialNumbers = _db.Owners.Where(x => x.UNQ4.Equals(submittedUNQ.Substring(submittedUNQ.Length - 4))).ToList().Select(o => o.UNQ).ToList();
Entity Framework中的Lazy-loading默认开启。你不能强迫某些东西成为 'lazily-loaded'。您所能做的就是关闭 lazy-loading(顺便说一下,它实际上不是 eager-loading,而是 'no-loading')。所以答案是你不能。但是,确实,正如评论所指出的那样,如果 Owners
class 具有导航 属性,例如
public class Owners{
public string UNQ4 {get;set;}
public virtual OtherClass NavigationProperty {get;set;}
}
然后 NavigationProperty
属性 在您执行诸如 var owners = _db.Owners.First()
之类的查询时最初将具有 null
的值。稍后,当您的程序调用 owners
访问它的 NavigationProperty
(如 owners.NavigationProperty.Name
)时,只有到那时才会访问数据库以获取相关的 NavigationProperty
数据.
Lazy-loading 实际上不会加载 导航属性 until/if 它们是必需的 。很好的参考:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx
我有一个代码必须遍历数据库中的每个项目,然后解密他们撤回的内容。有人告诉我延迟加载是一种很好的方式,但我什至不知道它到底是什么。我仔细阅读了它,但我仍然不清楚。下面是带来我需要的每件物品的代码。我如何延迟加载它才不会导致系统故障?
var potentialNumbers = _db.Owners.Where(x => x.UNQ4.Equals(submittedUNQ.Substring(submittedUNQ.Length - 4))).ToList().Select(o => o.UNQ).ToList();
Lazy-loading默认开启。你不能强迫某些东西成为 'lazily-loaded'。您所能做的就是关闭 lazy-loading(顺便说一下,它实际上不是 eager-loading,而是 'no-loading')。所以答案是你不能。但是,确实,正如评论所指出的那样,如果 Owners
class 具有导航 属性,例如
public class Owners{
public string UNQ4 {get;set;}
public virtual OtherClass NavigationProperty {get;set;}
}
然后 NavigationProperty
属性 在您执行诸如 var owners = _db.Owners.First()
之类的查询时最初将具有 null
的值。稍后,当您的程序调用 owners
访问它的 NavigationProperty
(如 owners.NavigationProperty.Name
)时,只有到那时才会访问数据库以获取相关的 NavigationProperty
数据.
Lazy-loading 实际上不会加载 导航属性 until/if 它们是必需的 。很好的参考:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx