我正在尝试使用实体框架更新记录,但希望避免手动设置每个属性然后调用保存更改。我有一个此类绑定到数据表单的实例,该数据表单会在用户更改其所有属性时更新它们。我可以看到使用它的最好方法是将上下文中的对象设置为等于绑定到我的数据表单的对象,但这不起作用。我尝试从上下文中删除对象,然后添加数据表单绑定对象,但它创建了一个全新的记录(我预料到了这一点,但决定值得一试)。我假设上下文中有某种类型的标志用于检测记录是否是新行,或者不考虑用数据绑定对象(具有相同的 pk 值)替换上下文对象不起作用的事实。
using (var scope = new TransactionScope())
{
try
{
using (var context = new CIS_DEVEntities())
{
GangMemberBio bio = context.GangMemberBios.First(P => P.id == this.id);
bio = this; //this does not work.
context.SaveChanges();
}
//If the top code is successfully completed then the transaction will be commited
//if not this line will be skipped and execution will be given to the catch block
scope.Complete();
}
catch
{
}
}
编辑想法 1 我在想我可以在我的 wpf 窗口本身上创建一个上下文对象,然后将数据表单绑定到从这个上下文中检索到的我的 gangmemberbio 对象。然后,当我调用 save changes 时,不需要做任何其他事情。我听说在内存中有一个数据上下文是不好的。或者如果我在 using 语句的上下文之外使用它只是不好?