Я прятался в течение довольно долгого времени, так что вот первый вопрос;)
Я играл с Entity Framework 5.0 Code First и хочу сделать следующее:
У меня есть два объекта, и я хочу, чтобы каждый объект имел отношение к объекту Address следующим образом:
- У меня есть один объект Address, который хранит значения адреса, вместо этого он не имеет отношения к объектам, для которых он имеет значения.
- Есть еще один объект Адресная книга, который ссылается на объект Адрес и соответствующие объекты (Лицо, Компания, некоторые другие в будущее)
Вот код:
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 (with composite primary key)
- Address_ID
- Person_ID
- AddressCompany
- Address_ID
- Идентификатор компании
- Люди
- Компании
Вот что я хочу сделать:
- Адрес
- AddressBook
- Address_ID (PK)
- Person_ID (ФК)
- Company_ID (ФК)
- Люди
- Компании
Я хочу иметь таблицу типа 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
или мне следует написать код внутри getter
и setter
свойства ICollection<Address> Addresses
и получить адреса из AddressBook?
Спасибо!