1

我有以下代码:

取得联系

public Contact LoadContactFromId(int contactId)
    {
        using(var ctx = new ContactContext())
        {
            var contact = ctx.Contacts.AsNoTracking().First(c => c.ContactId == contactId);

            return contact;
        }
    }

更新联系人

public void UpdateExistingContact(Contact updatedContact)
    {
        using(var ctx = new ContactContext())
        {
            ctx.Contacts.Attach(updatedContact);

            ctx.Entry(updatedContact).State = EntityState.Modified;

            foreach (var item in updatedContact.ContactPoints)
            {
                ctx.Entry(item).State = (item.ContactPointId == 0) ? EntityState.Added : EntityState.Modified;
            }

            ctx.SaveChanges();
        }
    }

我目前正在使用 ASP.NET 网络表单,由于它的无状态模型,我无法继续在DbContext. 因此,我最终基本上Contact从 POST 数据重新创建整个实体,然后对其进行更新。

这似乎是一种可怕的方法,因为我没有使用真正的原始实体,因此我失去了并发分辨率,而且总是必须重新创建对象似乎有点麻烦。

有没有更简单的方法来做到这一点?我看这一切都错了吗?

4

0 回答 0