C# 在bool中延迟加载

C# 在bool中延迟加载,c#,lazy-loading,C#,Lazy Loading,我有一个代码,它必须遍历数据库中的每一项,然后解密它们返回的内容。我被告知延迟加载是一种很好的方式,但我甚至不知道它到底是什么。我读过了,但还不清楚。下面是我需要的每件物品的代码。如何延迟加载此文件,使其不会导致系统故障 var potentialNumbers = _db.Owners.Where(x => x.UNQ4.Equals(submittedUNQ.Substring(submittedUNQ.Length - 4))).ToList().Select(o => o.U

我有一个代码,它必须遍历数据库中的每一项,然后解密它们返回的内容。我被告知延迟加载是一种很好的方式,但我甚至不知道它到底是什么。我读过了,但还不清楚。下面是我需要的每件物品的代码。如何延迟加载此文件,使其不会导致系统故障

var potentialNumbers = _db.Owners.Where(x => x.UNQ4.Equals(submittedUNQ.Substring(submittedUNQ.Length - 4))).ToList().Select(o => o.UNQ).ToList();

默认情况下,实体框架中的延迟加载处于启用状态。您不能强制“延迟加载”某些内容。您所能做的就是关闭延迟加载(顺便说一句,它实际上不是即时加载,而是“无加载”)。所以答案是你不能。实际上,正如评论所指出的,如果
Owners
类有一个导航属性,例如

public class Owners{
    public string UNQ4 {get;set;}
    public virtual OtherClass NavigationProperty {get;set;}
}
然后,当您执行诸如
var owners=\u db.owners.First()
之类的查询时,
NavigationProperty
属性最初的值将为
null
。稍后,当您的程序调用
所有者
访问其
导航属性
(如
所有者.NavigationProperty.Name
)时,只有这样才能访问数据库以获取相关的
导航属性
数据


延迟加载在需要导航属性之前不会有效加载导航属性。很好的参考:

假设
UNQ4
字符串
,这里不涉及延迟加载。延迟加载仅适用于导航属性(当您实际访问它们时,而不是在查询它们时)。请参见,您也需要发布模型的代码。首先删除所有的
ToList
调用,这些调用只会禁止已发生的延迟执行,并强制DB可以在应用程序中执行的操作。你真的在竭尽全力去做一些没有任何用处的额外工作,积极地抑制你想要做的事情。如果合适的话,你也可以考虑选择的行数。虽然你能得到的最好的性能改进可以通过像“高兴它是有帮助的”这样的方式来实现。