2

我有一个具有很多属性的实体,我不想手动执行类似的操作

public void Update(Contact cont)
    {
        using (var ctx = new DatabaseEntities())
        {
            var res = from n in ctx.Contacts
                          where n.ContactID == cont.ContactID
                          select n;

            var selContact = res.First();
            selContact.AddressSuiteNumber = cont.AddressSuiteNumber;
            selContact.PhoneNumber = cont.PhoneNumber;
            /* and doing this for eeeeeeevery 40 properties */
            ctx.SaveChanges();

        }

    }

我试过了

selContact = cont

无济于事。有没有这样一种快速的方法可以将数据从在 Update() 方法中作为参数传递的实体实例复制到在 LINQ 选择中找到的实例,然后保存?

4

1 回答 1

3

如果您的实体尚未附加到上下文,您可以尝试附加它并将其状态更改为Modified

using (var ctx = new DatabaseEntities())
{
    ctx.Contacts.Attach(cont);

    // Marks all properties as modified, so new values will be pushed to DB on SaveChanges
    ctx.ObjectStateManager.ChangeObjectState(cont, System.Data.EntityState.Modified);

    ctx.SaveChanges();
}
于 2012-08-02T14:30:37.673 回答