Dot-Net-Core

EF Core 一對一或零關係

  • March 4, 2019

我有人員和地址。地址是可選的。請看下面的程式碼

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..1 Address,而Address(從屬)將具有 1 Person(因為PersonIdPK 和 FK)。

這稱為共享主鍵關聯,是在 EF Core中建模一對零或一對關係的標準(和預設)方式。

有關詳細資訊,請參閱關係

引用自:https://stackoverflow.com/questions/54985032