嗨,我在下面指定了一个代码,目前将新行插入子表并更新父表。
var child= new Child();
child.Parent= parent;
DataContext.Parent.Add(parent);
DataContext.Entry(parent).State = EntityState.Modified;
现在,我希望在一次交易中同时更新父母和子表。如果有人可以帮助我,这将非常有帮助。
您将使用交易范围...
using (TransactionScope scope = new TransactionScope())
{
var child= new Child();
child.Parent= parent;
DataContext.Parent.Add(parent);
DataContext.Entry(parent).State = EntityState.Modified;
DataContext.SaveChanges();
scope.Complete();
}
我看不到您在代码片段中介绍您的数据上下文,但我会期望更多这样的东西。
using (var context = new MyContext())
{
using (TransactionScope scope = new TransactionScope())
{
var child= new Child();
child.Parent= parent;
context.Parent.Add(parent);
context.Entry(parent).State = EntityState.Modified;
context.SaveChanges();
scope.Complete();
}
}
这样做后,上下文被处置了。
编辑 - 当您想更新父级而不是添加父时。
您应该从数据库中检索父母,而不是添加它并将其更改给父母,但是在您的代码中没有对父母进行更改,因此当然不会对父母进行更新记录...如果父母已经存在,则不需要添加。
using (var context = new MyContext())
{
using (TransactionScope scope = new TransactionScope())
{
var child= new Child();
var parentRecord = context.Parent.Find(parent.Id);
child.Parent= parentRecord;
context.SaveChanges();
scope.Complete();
}
}