TransactionScope, где начинается транзакция на sql-профилировщике?
Мне нужно сделать что-то подобное в контексте транзакции
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-профайлер, но не вижу начала tran, является ли этот блок кода правильным? Я что-то пропустил?
Ответы
Ответ 1
Как и @Marc в своем комментарии, сообщения, вероятно, отфильтровываются. Вы только собирали сообщения транзакций T-SQL в профиле по умолчанию, а не сообщения транзакций, которые отправляются напрямую с помощью API (как это делает TransactionScope
).
В SQL Server Profiler перейдите к выбору события трассировки и установите флажок "Показать все события". Внизу внизу находится категория "Транзакции", и она должна дать вам то, что вам нужно. В частности, события, начинающиеся с TM:
.