您好我有下面指定的代码,它当前正在将新行插入子表并更新父表。
var child= new Child();
child.Parent= parent;
DataContext.Parent.Add(parent);
DataContext.Entry(parent).State = EntityState.Modified;
现在我希望在单个事务中更新父表和子表。如果任何人能帮助我,将会非常有帮助。
答案 0 :(得分:0)
您将使用交易范围......
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();
}
}