ForeignKey(字串)屬性

如果需要不遵循 EF 約定的外來鍵,則指定自定義外來鍵名稱。

public class Person 
{
    public int IdAddress { get; set; }

    [ForeignKey(nameof(IdAddress))]
    public virtual Address HomeAddress { get; set; }
}

當你與同一實體型別有多個關係時,也可以使用此選項。

using System.ComponentModel.DataAnnotations.Schema;

public class Customer
{
    ...

    public int MailingAddressID { get; set; }
    public int BillingAddressID { get; set; }

    [ForeignKey("MailingAddressID")]
    public virtual Address MailingAddress { get; set; }
    [ForeignKey("BillingAddressID")]
    public virtual Address BillingAddress { get; set; }
}

如果沒有 ForeignKey 屬性,EF 可能會在獲取 MailingAddress 時將它們混淆並使用 BillingAddressID 的值,或者它可能會根據自己的命名約定(如 Address_MailingAddress_Id)為列提供不同的名稱並嘗試使用相反(如果你將其與現有資料庫一起使用,則會導致錯誤)。