我有以下代码:
取得联系
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 数据重新创建整个实体,然后对其进行更新。
这似乎是一种可怕的方法,因为我没有使用真正的原始实体,因此我失去了并发分辨率,而且总是必须重新创建对象似乎有点麻烦。
有没有更简单的方法来做到这一点?我看这一切都错了吗?