我已经创建了这个分层数据库:
每个人都有一名经理,一名经理可以有多名员工.
然后,我创建了这些C#对象:
我将它们添加到建模器中,如下所示:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>(p =>
{
p.Property(e => e.Id).HasColumnName("Id");
p.Property(e => e.Name).HasColumnName("Name");
p.HasOne(e => e.Manager).WithMany(e => e.Employees).HasForeignKey(e => e.ManagerId);
});
modelBuilder.Entity<Manager>(m =>
{
m.ToTable("Persons");
m.Property(e => e.Id).HasColumnName("Id");
m.Property(e => e.Name).HasColumnName("Name");
m.HasMany(x => x.Employees).WithOne().HasForeignKey(p => p.Id);
});
}
但我得到的结果是:
预计Mary拥有员工Catherine和Anna,如数据库截图所示.
我做错了什么?
在管理器建模器中更改外键属性时出现错误,例如:
无法将表‘Person’用于实体类型‘Person’,因为它正用于实体类型‘Manager’以及可能的其他实体类型,但没有链接关系.将外键添加到主键属性上的"Person",并指向映射到"Person"的另一个实体类型上的主键