【发布时间】:2021-12-12 02:42:12
【问题描述】:
我有一个项目使用EntityFrameworkCore 来访问数据库中的数据。
我正在尝试为单个对象(即Category)创建父/子关系。我的对象看起来像这样
public class Category
{
public int Id { get; set;}
public string Name { get; set; }
public int? ParentCategoryId { get; set; }
public Category ParentCategory { get; set; }
public ICollection<Category> Children { get; set; }
}
属性ParentCategoryId 是可选的,但设置后,它将确定当前类别的父级。同时,当包含Children关系时,我希望能够拉取ParentCategoryId等于当前类别id的所有类别。
我在上下文中添加了以下代码来定义关系
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Category>(cat =>
{
cat.HasMany(x => x.Children).WithOne().HasForeignKey(x => x.ParentCategoryId);
cat.HasOne(x => x.ParentCategory).WithOne();
});
}
因此,当调用以下代码时,我想获取类别 id 为 10 的 ParentCategory 和所有 Children。
var category = _context.Categories.Where(cat => cat.Id == 10)
.Include(x => x.ParentCategory)
.Include(x => x.Children)
.ToList();
但是,上面的代码给了我以下错误
Invalid column name 'ParentCategoryId1'." string
如何正确定义ParentCategory 和Children 的关系?
【问题讨论】:
标签: c# entity-framework .net-core entity-framework-core