6

我在获得可选的一对多关系时遇到问题。

我的模型是:

public class Person
{
    public int Identifier { get; set; }
    ...
    public virtual Department Department { get; set; }
}

public class Department
{
    public int Identifier { get; set; }
    ...
    public virtual IList<Person> Members { get; set; }
}

我想为 a 分配零或DepartmentPerson。分配后,Person应显示在 的Members-List 中Department

我正在Person使用 Fluent API 进行配置,如下所示:

HasKey(p => p.Identifier);
HasOptional(p => p.Department).WithMany(d => d.Members);

Department还通过配置而不是尝试了另一种方式Person

HasMany(d => d.Members).WithOptional(p => p.Department);

然而,两种方式我都得到了例外:

无法确定“人员”和“部门”类型之间关联的主要结束。此关联的主体端必须使用关系流式 API 或数据注释显式配置。

当同时配置两者时,我得到:

在“人员”类型上声明的导航属性“部门”已配置有冲突的多重性。

使用与另一种实体类型相同的配置是可行的Person,但是该实体类型引用自身。

如何正确配置这种关系?

4

3 回答 3

10

你可以试试这个:

this.HasOptional(s => s.Department)
    .WithMany(s => s.Members)
    .HasForeignKey(s => s.MemberOfDepartment);
于 2015-03-27T17:01:28.767 回答
0
modelBuilder.Entity<Department>().HasMany(x => x.MemberOfDepartment).WithOptional();
于 2017-11-05T08:30:05.183 回答
0

也试试这个:

public class Person
{
    public int Identifier { get; set; }
    public int DepartmentIdentifier {get; set;}
    public virtual Department Department { get; set; }
}

public class Department
{
    public int Identifier { get; set; }

    public virtual IList<Person> Members { get; set; }
}

使用 Fluent API 的 EF Person 配置:

this.HasRequired(p => p.Department).WithMany(d => d.Members).HasForeignKey(p => 
p.DepartmentIdentifier);

this.Property(p => p.DepartmentIdentifier).IsRequired();
于 2020-12-17T18:55:36.270 回答