我在將一個新的對象圖形置於具有一對多關係的上下文時遇到問題。我正在使用Entity Framework 4.1發行版,並實施了Code-First方法。我正在使用現有的SQL 2008數據庫並實現了從DbContext派生的上下文。我有兩個班級,人員和地址。一個人可以包含0個或更多地址,如此定義。實體框架4.1代碼優先並插入新的一對多關係
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的新實例。但是,當我將此結構添加到上下文並保存時,只會保留集合中的第一個地址。第二個將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();
它不會拋出異常,但地址集合中的第二項只是未保存。
有沒有人有什麼好的想法,爲什麼只有第一個會被保存?謝謝。
您正在創建一個'person',但是將'entity'添加到DbSet。一個錯字? – Slauma
很好的觀察,但那只是一個錯字。 – connr