2011-07-09 27 views
11

i sql profiler koşuyorum ama tran başlamak bkz edemez bir işlem bağlamındaTransactionScope, sql profiler üzerinde işlem başlatılır nerede?

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(); 
} 
} 

üzerine böyle bir şey yapmak gerekir, o kod bloğu doğrudur? Bir şey mi eksik?

+2

Muhtemelen filtre uyguladınız mı? İşlemin içinde ctx oluşturulmasını da deneyebilirsiniz, sadece bir şeyi değiştirdiğimi görmek için. –

+0

Bu kod bloğu için neden işlem kapsamı kullanıyorsunuz? 'SaveChanges', eğer birden fazla işlem kaynağı kullanmıyorsanız ya da ihtiyacınız olmadığında defalarca 'SaveChanges' çağırıyorsanız, bunu tanımlamıyorsanız dahili olarak işlemi kullanır. –

+0

Ladislav, bu yanlış verileri önlemek için, başkasının başka bir yöntemle kasiyer parasını değiştirebilir, eğer işlem yapmıyorsa, bu bilgi yanlış olacak – Alexandre

cevap

19

gibi @Marc yaptığı açıklamada, mesajlar muhtemelen filtre ediliyor söyledi. Sadece T-SQL işlem mesajlarını varsayılan profilde toplarsınız, doğrudan API kullanılarak gönderilen işlem mesajlarını değil (TransactionScope gibi).

SQL Server Profiler, iz olay seçimine gidin ve "Göster Tüm Etkinlikler" onay kutusunu işaretleyin. En altta bir "İşlemler" kategorisi ve ihtiyacınız olanı size vermesi gerekiyor. Özellikle, TM: ile başlayan olaylar.

+0

budur Adam! tks – Alexandre

İlgili konular