Подтвердить что ты не робот

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, является ли этот блок кода правильным? Я что-то пропустил?

4b9b3361

Ответ 1

Как и @Marc в своем комментарии, сообщения, вероятно, отфильтровываются. Вы только собирали сообщения транзакций T-SQL в профиле по умолчанию, а не сообщения транзакций, которые отправляются напрямую с помощью API (как это делает TransactionScope).

В SQL Server Profiler перейдите к выбору события трассировки и установите флажок "Показать все события". Внизу внизу находится категория "Транзакции", и она должна дать вам то, что вам нужно. В частности, события, начинающиеся с TM:.