我已经在这个街区转了几次,所以我采取了一种新的方法。我想弄清楚是否有可能在多个 0 对多关系的多方上拥有一个实体。这就是我想要做的:
客户有 0 对多电话
public class Client
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ClientId { get; set; }
public string Name { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
}
企业有 0 对多电话
public class Business
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int BusinessId { get; set; }
public string Name { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
}
这是电话:
public class Phone
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PhoneId { get; set; }
public string Number { get; set; }
}
当然,Business/Client 中的 Phones 属性的问题在于,这会在 Phone 中为 Client 和 Business 创建 FK,这会使 Phone 变得混乱。
所以,我看到另一张海报尝试创建一个手动连接表,但它似乎是面向参与一个关系的多方:
public class ClientPhone
{
public int ClientID { get; set; }
public int PhoneID { get; set; }
public virtual Client Client { get; set; } // One Client
public virtual Phone Phone { get; set; } // One Phone
}
我是否应该使用传统的 0 对多关系将 Phone 拆分为 ClientPhones 和 BusinessPhones“正常”实体。如果有人能给我一些关于最干净的建模方法的建议,我将不胜感激。
谢谢!