[英]one to one multiple foreign key from same table EF Core
堅持為下面的表關系編寫代碼:
public class PersonModel
{
public int ID { get; set; }
public string Name{ get; set; }
public string Address{ get; set; }
public DateTime? DateofBirth{ get; set; }
public GenderEnum Gender{ get; set; }
public PersonDetailModel PersonDetail { get; set; }
public PersonDetailModel PersonDetailforMate { get; set; }
}
public class PersonDetailModel
{
public int ID { get; set; }
public int PersonID { get; set; }
public int? MateID { get; set; }
public string PhoneNumber{ get; set; }
public string OfficeAddress{ get; set; }
public MarriageStatusEnum MarriageStatus{ get; set; }
public PersonModel Person { get; set; }
public PersonModel PersonforMate { get; set; }
}
我使用 Fluent API:
modelBuilder.Entity<PersonModel>()
.HasOne(d => d.PersonDetailModel)
.WithOne(p => p.PersonModel)
.HasForeignKey<PersonDetailModel>(d => d.PersonID);
modelBuilder.Entity<PersonDetailModel>()
.HasOne(d => d.PersonModel)
.WithOne(p => p.PersonDetailModel)
.HasForeignKey<PersonDetailModel>(d => d.MateID);
當我構建時,它收到錯誤
Cannot create a relationship between 'PersonModel.PersonDetailforMate' and 'PersonDetailModel.Person', because there already is a relationship between 'PersonModel.PersonDetail' and 'PersonDetailModel.Person'. Navigation properties can only participate in a single relationship.
類似問題有幾個參考:
但那些是一對多的關系。
*對不起,我的英語不好
我在我的項目中遇到了類似的情況,這就是我最終要做的:
public class PersonModel
{
public int ID { get; set; }
public string Name{ get; set; }
public string Address{ get; set; }
public DateTime? DateofBirth{ get; set; }
public GenderEnum Gender{ get; set; }
public int PersonID { get; set; }
[ForeignKey("PersonID ")]
public PersonDetailModel PersonDetail { get; set; }
public int? MateID { get; set; }
[ForeignKey("MateID")]
public PersonDetailModel PersonDetailforMate { get; set; }
}
public class PersonDetailModel
{
public int ID { get; set; }
public string PhoneNumber{ get; set; }
public string OfficeAddress{ get; set; }
public MarriageStatusEnum MarriageStatus{ get; set; }
}
所以PersonModel
會有兩個PersonDetailModel
外鍵。 我使用ForeignKey
屬性來明確告訴 EF 哪個外鍵屬於哪個關系 - 如果您使用Foreignkey
屬性,則不需要 Fluent API 配置...
上面的代碼將在數據庫中為您構建一個PersonModel
表,其中PersonId
和MateId
列作為外鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.