我一直潜伏在很长一段时间,所以这里的第一个问题,很多关系(一个或多个);)实体框架代码优先许多在单个表
我一直在玩实体框架5.0的Code First我想要做如下:
我有两个实体,我想每一个实体有关联的下列方式处理实体:
- 我有一个地址存储地址值实体,它与实体没有关系为它具有价值,而不是
- 还有一个实体通讯录具有参考地址实体和coresponding实体(人,公司,另一些人在未来)
这里的代码:
public partial class Address : BaseEntity
{
[Key]
public int ID { get; set; }
public string Street { get; set; }
public string CityName { get; set; }
public int? PostalCode { get; set; }
public virtual ICollection<Person> Persons { get; set; }
public virtual ICollection<Company> Companies{ get; set; }
}
public partial class Person : BaseEntity
{
[Key]
public int ID { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public partial class Company: BaseEntity
{
[Key]
public int ID { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
什么将这个做的是创建数据库架构与表:
- 地址
- AddressPerson(具有复合主键)
- ADDRESS_ID
- PERSON_ID
- AddressCompany
- ADDRESS_ID
- COMPANY_ID
- 人民
- 公司
这就是我想做的事:
- 地址
- 通讯录
- ADDRESS_ID(PK)
- PERSON_ID(FK)
- COMPANY_ID(FK)
- 人民
- 公司
我想要做的是有表所示通讯录:
public partial class AddressBook
{
[Key]
public int ID { get; set; }
public virtual Address Address { get; set; }
public virtual Person Person { get; set; }
public virtual Company Company { get; set; }
}
我不知道如何定义导航属性人和公司类。
他们应该有ICollection<Address> Addresses
导航属性,因为我希望他们只需收集地址而不知道底层的地址地址簿。
是否有可能与DbModelBuilder
要做到这一点,或者我应该写代码里面getter
和ICollection<Address> Addresses
财产setter
,并得到地址从通讯录?
谢谢!
感谢您的帮助 - 我得出结论,我应该做的事情就像在第一个例子。我甚至编写了解决方案的一部分,但我不太喜欢它。我认为应该有更好的办法。 – dpihac 2013-03-24 16:57:22