簡體   English   中英

實體框架中的可選一對多關系

[英]Optional One-to-many Relationship in Entity Framework

我在使用可選的一對多關系時遇到問題。

我的模型是:

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; }
}

我想為Person分配零個或一個Department 當分配時, Person應在顯示Members的的-列出Department

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

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

還通過配置Department而不是Person嘗試了另一種方式:

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

但是,通過兩種方式,我都遇到了異常:

無法確定類型“人”和“部門”之間關聯的主要端。 必須使用關系流暢 API 或數據注釋顯式配置此關聯的主體端。

當同時配置兩者時,我得到:

在類型“Person”上聲明的導航屬性“Department”已配置為具有沖突的多重性。

對另一種實體類型使用與Person相同的配置工作,但是該實體類型引用自身。

如何正確配置這種關系?

你可以試試這個:

this.HasOptional(s => s.Department)
    .WithMany(s => s.Members)
    .HasForeignKey(s => s.MemberOfDepartment);
modelBuilder.Entity<Department>().HasMany(x => x.MemberOfDepartment).WithOptional();

也試試這個:

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 人員配置:

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

this.Property(p => p.DepartmentIdentifier).IsRequired();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM