【发布时间】:2023-03-29 07:39:01
【问题描述】:
我正在使用 EF Core,但遇到延迟加载问题。
我的模型是:
public class Product
{
public int Id{get; set;}
public string Name {get; set;}
public virtual Category Category {get; set;}
}
public class Category
{
public int Id{get; set;}
public string Name {get; set;}
}
获取产品的代码:
List<int> selectedCategories = new List<int> { 1, 2 };
// DatabaseContext inherited from DbContext
// Products is of type DbSet<Product>
IQueryable<Product> query = _dbContext.Products.Include(p=>p.Category);
IQueryable<Product> filtered = query.Where(p => selectedCategories.Contains(p.Category.Id));
var result = filtered.ToList();
问题是:filtered 列表包含真正按类别 ID 过滤的产品,但所有产品的类别均为空。因此,当我将此结果传递给查看并尝试获取类别名称时,我有一个空引用异常。
如何使用 Product 加载 Category 实体?
UPD:已解决!
我意识到我使用了来自System.Data.Entity 的错误.Include 方法,而不是Microsoft.EntityFrameworkCore。
因此,如果您遇到同样的问题,请检查您是否使用了来自 Microsoft.EntityFrameworkCore 的正确扩展方法。
【问题讨论】:
-
啊,我看到你已经解决了你的问题。请使用答案按钮发布正确的“答案”,这样每个读者都可以清楚地看到这个问题已经解决了。
-
如果不修复课程,您的问题将无法解决,因为您的 EF 有错误
标签: c# entity-framework-core lazy-loading