我已经潜伏了很长一段时间,所以这是第一个问题;)
我一直在玩 Entity Framework 5.0 Code First,我想做以下事情:
我有两个实体,我希望每个实体都以下列方式与地址实体有关系:
- 我有一个存储地址值的地址实体,它与具有值的实体没有关系,而是
- 还有另一个实体AddressBook引用了Address实体和相应的实体(Person,Company,未来还有一些其他实体)
这是代码:
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(具有复合主键)
- 地址_ID
- Person_ID
- 地址公司
- 地址_ID
- 公司_ID
- 人们
- 公司
这是我想要做的:
- 地址
- 地址簿
- 地址_ID (PK)
- Person_ID (FK)
- 公司_ID (FK)
- 人们
- 公司
我想要做的是有像AddressBook这样的表:
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; }
}
我不确定如何在Person和Company类中定义导航属性。
它们应该具有 ICollection<Address> Addresses
导航属性,因为我希望它们只使用地址集合而不知道底层的AddressBook。
是否可以使用或应该在属性内部和属性中DbModelBuilder
编写代码并从AddressBook获取地址?getter
setter
ICollection<Address> Addresses
谢谢!