无法更新公司的地址

时间:2015-02-11 09:45:47

标签: entity-framework

我使用的是EF 4.4 我有一个包含许多地址行的公司实体。 enter image description here 所以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();
    }
}

0 个答案:

没有答案