Dot-Net-Core
EF Core 一對一或零關係
我有人員和地址。地址是可選的。請看下面的程式碼
class Person { [Key] public int PersonID { get; set; } public string Name { get; set; } public Address Address { get; set; } } class Address { [Key, ForeignKey("Person")] public int PersonID { get; set; } public string City { get; set; } }註冊碼如下:
modelBuilder.Entity<Address>(entity => { entity.HasKey(z => z.PersonID); entity.HasOne(p => p.Person) .WithOne(a => a.Address) .HasForeignKey<Person>(a => a.PersonId); });我應該如何更改映射以使地址可選?
這裡
.HasForeignKey<Person>(a => a.PersonId)您告訴 EF 這
Person.PersonId將是 的 FK(外鍵)Address,即Person依賴並引用主體Address。它應該是其他方式:
.HasForeignKey<Address>(a => a.PersonId)這樣,
Person(主體)將具有 0..1Address,而Address(從屬)將具有 1Person(因為PersonIdPK 和 FK)。這稱為共享主鍵關聯,是在 EF Core中建模一對零或一對關係的標準(和預設)方式。
有關詳細資訊,請參閱關係。