Вот моя модель:
public class Customer
{
public int ID { get; set; }
public int MailingAddressID { get; set; }
public virtual Address MailingAddress { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int ID { get; set; }
public int CustomerID { get; set; }
public virtual Customer Customer { get; set; }
}
У клиента может быть любое количество адресов, однако только один из этих адресов может быть почтовым адресом.
Я могу добиться, чтобы отношения «один к одному» и отношения «один ко многим» работали нормально, если я использую только один, но когда я пытаюсь ввести оба, я получаю несколько ключей CustomerID (CustomerID1, CustomerID2, CustomerID3) в таблице адресов. Я действительно рву волосы из-за этого.
Чтобы отобразить отношения «один к одному», я использую метод, описанный здесь http://weblogs.asp.net/manavi/archive/2011/01/23/associations-in-ef-code- first-ctp5-part-3-one-to-one-external-key-association.aspx