0
我一直在这个块上绕过几次,所以我采取了一种全新的方法。我想弄清楚是否有可能在多个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; }
}
当然,在商业/客户端Phones属性的问题是,这将创建FK的电话博客户端和业务部门混淆了电话。
于是,我看到了另一个海报尝试创建一个手动连接表,但它似乎是面向参加一个关系的多面:
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
}
我应该分头电话成ClientPhones和BusinessPhones“正常'的实体使用传统的0对多关系。如果有人可以给我一些建议,以最简洁的方式来建模,这将非常感激。
谢谢!
哇,是我在想这个!我假设我将派生类添加到DBContext? – cardinalPilot 2013-04-24 13:53:12
是的,这是正确的 – 2013-04-24 14:29:31
额外的想法 - 你指的是能够轻松地分离客户端和商务电话。如果鉴别器列在内部并且无法从POCO访问,你怎么能这样做?如果您无法回答,我会发布一个新问题。 – cardinalPilot 2013-04-30 20:18:13