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
)为列提供不同的名称并尝试使用相反(如果你将其与现有数据库一起使用,则会导致错误)。