Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
50 个问题
我是 dotnet6 的新手,请让我磕头如何在 dotnet6 中为 certaion 查询启用延迟加载,因为启用它会 gloablic 引入 n+1 问题并降低性能,我希望 thisto 在某些情况下启用
Note:此问题总结整理于:how to enable lazy loading in dotnet6 for certaion queries as enabling it gloablly intruduces n+1 problem and
可以使用 ChangeTracker.LazyLoadingEnabled 属性,下面是一个简单的示例。
可以先在 DbContext 类的构造函数中设置此项:
public class BlogDbContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
public BlogContext()
{
//Set the default value to false
this.ChangeTracker.LazyLoadingEnabled = false;
}
}
这将关闭全局延迟加载
然后,将此添加到要启用延迟加载的代码中:
using (var context = new BlogDbContext())
{
// Enable lazy loading only in this query
context.ChangeTracker.LazyLoadingEnabled = true;
//Execute query
var blogs = context.Blogs.ToList();
// Perform other operations, lazy loading is enabled here
// Disable lazy loading again
context.ChangeTracker.LazyLoadingEnabled = false;
}
这样,您可以通过设置
ChangeTracker.LazyLoadingEnabled。
使用上述代码时无法禁用延迟加载吗?如果是这样,请尝试使用这样的代码:
public class BlogDbContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
public BlogContext()
{
//Set the default value to false
this.ChangeTracker.LazyLoadingEnabled = false;
}
}
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。