我需要在事务上下文中执行类似于这样的操作。
using(var context = new Ctx())
{
using (TransactionScope tran = new TransactionScope())
{
decimal debit = 10M;
int id = 1;
var data = context.Cashier
.Where(w => w.ID == id)
.Select(s => new{ s.Money })
.Single();
Cashier cashier = new Cashier(){ ID = id };
context.Cashier.Attach(cashier);
cashier.Money = data.Money - debit;
context.Entry(cashier).Property(p => p.Money ).IsModified = true;
context.SaveChanges(SaveOptions.None);
tran.Complete();
}
}
我正在运行SQL Profiler,但是看不到begin tran,请问这段代码是否正确?我有什么遗漏吗?
SaveChanges
会在内部使用事务,所以除非你正在使用多个事务资源或多次调用SaveChanges
,否则你不需要它。 - Ladislav MrnkaSaveChanges
函数在保存时总是使用事务。除非您在此代码块内多次调用SaveChanges
(或进行其他数据库操作),否则不需要另一个事务。 - Adam Robinson