Вот моя модель:
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-foreign-key-associations.aspx