Asp .net core web api Entity Framework 5.0 中的Lazy loading(延迟加载)问题。在Entity Framework中,延迟加载是EF负责请求数据的方式,意味着只有在需要访问导航属性之前,导航属性才会被从数据库中加载。
解决这个问题的方法是在EF的上下文中加入Lazy loading支持,这可以通过以下方式完成:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseLazyLoadingProxies(); // enable lazy loading
}
public DbSet Products { get; set; }
public DbSet Categories { get; set; }
}
在上面的示例中,我们在EF的上下文类中启用了Lazy loading支持。使用UseLazyLoadingProxies()方法启用延迟加载,这意味着我们现在可以在我们的控制器中使用导航属性,而EF将担心适时地加载它们。
然后,我们可以使用以下代码来检索数据:
[HttpGet]
public async Task> Get() {
var context = new ApplicationDbContext();
return await context.Categories.ToListAsync();
}
在返回的Category对象上,可以访问延迟加载的Product属性。
这样,我们就成功地解决了Asp .net core web api Entity Framework 5.0 Lazy loading问题。
上一篇:ASP.NETCoreWebAPI对客户端请求发送了错误的400BadRequest响应。
下一篇:ASP.NETCoreWebAPIEntityFrameworkInvalidobjectname只在通过IIS服务器运行时出现