我使用的是EF 4.4 我有一个包含许多地址行的公司实体。 所以CompanyId是AddressLine上的外键。 我想更改该公司的地址。 所以我的方法 - 可能不是最好的方法 - 是删除现有的地址线并添加新的地址线。 但是我不断收到诸如" System.InvalidOperationException之类的错误:只有在属性的当前值为null时才能设置EntityKey属性。"和" System.InvalidOperationException:具有临时EntityKey值的对象无法附加到对象上下文。" 代码如下;
public static void UpdateAddressLinesForCompany(int companyId, IList<AddressLine> lines)
{
var company = Get(companyId);
using (var db = new SherryGreenGroupEntities())
{
company.AddressLines.ToList().ForEach(x => db.AddressLines.DeleteObject(x));
foreach (var address in lines.OrderBy(x => x.Position))
{
address.Created = DateTime.Now;
address.CreatedBy = SessionObjects.LoggedInUser.EmployeeId;
company.AddressLines.Add(address);
//db.AddressLines.Attach(address);
db.AddressLines.AddObject(address);
db.ObjectStateManager.ChangeObjectState(address, EntityState.Modified);
}
db.SaveChanges();
}
}