У меня возникли проблемы с привязкой нового графа объектов к контексту с помощью отношения «один ко многим». Я использую выпуск Entity Framework 4.1 и реализую подход Code-First. Я использую существующую базу данных SQL 2008 и реализовал контекст, производный от DbContext. У меня два класса: Person и Address. Человек может содержать 0 или более Адресов, определенных как таковые.
public class Person
{
public Person()
{
Addresses = new List<Address>();
}
public int PersonId { get; set; }
***Additional Primitive Properties***
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public int AddressTypeId { get; set; }
***Additional Primitive Properties***
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}
Я пытаюсь создать новый экземпляр Человека с двумя адресами. Однако, когда я добавляю эту структуру в контекст и сохраняю, сохраняется только первый адрес в коллекции. Второй имеет свойство навигации Person, равное null, и не связан с объектом Person, однако первый в списке связан.
var person = new Person();
var mailingAddress = new Address() { AddressTypeId = 1 };
person.Addresses.Add(mailingAddress);
var billingAddress = new Address() { AddressTypeId = 2 };
person.Addresses.Add(billingAddress);
context.People.Add(entity);
context.SaveChanges();
Он не вызывает исключения, но второй элемент в коллекции Address является просто не спасены.
Есть ли у кого-нибудь хорошие идеи, почему только первый будет спасен? Спасибо.