【发布时间】:2019-05-17 09:09:52
【问题描述】:
例如我有这样的代码
using (AccountingEntities ent = new AccountingEntities())
{
//just to read record
var recs = ent.Payments.Where(pp => pp.PaymentId == 123);
foreach (p in recs)
{
if (p.Status == 1)
{
using (var dbContextTransaction = ent.Database.BeginTransaction())
{
var someotherrecs = ent.SomeTable.Where(s => s.PaymentId == 456);
foreach (var rec in someotherrecs)
{
rec.Status = 2;
}
ent.SaveChanges();
dbContextTransaction.Commit();
}
}
}
}
如果我不必更改记录,我将避免启动事务,可能在 90% 的情况下。是否可以执行此类操作(在单个上下文中启动和完成多个事务)?
【问题讨论】:
-
SaveChanges会自动为您执行此操作。 -
@IvanStoev 但它会产生异常,还是错过写入更改?
-
如果您在一个事务中有多个
SaveChanges调用,这将是有意义的(也许)。有时这是不可避免的。
标签: c# entity-framework transactions dbcontext