Mar*_*ves 77 c# entity-framework lazy-loading
有没有办法在Entity Framework 6上禁用延迟加载特定查询?我想定期使用它,但有时我想禁用它.我正在使用虚拟属性来延迟加载它们.
Kar*_*san 70
在要执行的查询之前设置以下代码
context.Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)
Wil*_*ros 38
您可以为特定查询禁用延迟加载,如下所示:
public static Cursos GetDatosCursoById(int cursoId)
{
using (var bd = new AcademyEntities())
{
try
{
bd.Configuration.ProxyCreationEnabled = false;
return bd.Cursos.FirstOrDefault(c => c.cursoId == cursoId);
}
catch (Exception ex)
{
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Par*_*ird 19
我可能在这里遗漏了一些东西,但是不是每次都改变配置,可能另一种方法.Include()只用于那些你想要加载的查询吗?
假设我们有一个Product具有导航属性的一类Colour类,您可能加载Colour了一个Product这样的-
var product = _context.Products
.Where(p => p.Name == "Thingy")
.Include(x => x.Colours)
.ToList();
Run Code Online (Sandbox Code Playgroud)
Jua*_*uan 15
转到图属性并找到指定为延迟加载的属性并将其禁用.
如果您首先使用代码,请转到配置区域并从那里禁用它:
this.Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)
另一个 EF 版本(实体框架 5)的另一种方法
//Note: ContextOptions instead of ChangeTracker or Configuration
context.ContextOptions.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)