我正在使用EF 6,Code First。我有一个"联系人"实体,"客户"和#34;制造商"。客户和制造商都有联系实体列表。也许在开发期间,可以有更多具有联系人实体列表的实体。如何塑造联系人实体,以便我没有单独的ID作为客户和制造商的外键?我想到的是:
public class Contact
{
[Key]
public int Id { get; set; }
...
public int ParentId { get; set; }
[ForeignKey("ParentId")]
public virtual Customer Customer { get; set; }
[ForeignKey("ParentId")]
public virtual Manufacturer Manufacturer { get; set; }
}
这可能吗?
修改 似乎 不容易。我做的是以下内容:
public class Customer
{
...
[InverseProperty("Customer")]
public virtual ICollection<Contact> Contacts { get; set; }
....
}
public class Manufacturer
{
...
[InverseProperty("Manufacturer")]
public virtual ICollection<Contact> Contacts { get; set; }
...
}
public class Contact
{
public int? ParentId { get; set; }
[ForeignKey("ParentId")]
public virtual Manufacturer Manufacturer { get; set; }
[ForeignKey("ParentId")]
public virtual Customer Customer { get; set; }
}
现在我必须包括制造商和客户而非制造商或客户。放一个&#34; ... HasOptional(...)&#34;在模型构建器中没有解决问题。
????
答案 0 :(得分:1)
您需要在客户和制造商字段中使用InverseProperty属性,例如
[InverseProperty("Id")]
[ForeignKey("ParentId")]
public virtual Customer Customer { get; set; }