[英]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.