Транзакции и DataReader
От: Ellin Россия www.rsdn.ru
Дата: 10.07.09 11:42
Оценка:
Пусть я пишу:
using(var con = new SqlConnection(@"Data Source=.;Initial Catalog=pubs;Integrated Security=True"))
            {
                con.Open();
                SqlCommand com = new SqlCommand("SELECT * FROM titles", con);               
                SqlDataReader dr = com.ExecuteReader();    
                while (dr.Read())
                {                        
                    Console.WriteLine(dr[1].ToString());                       
                }
                dr.Close();
            }

Смотрим в профайлере — нет транзакций. Затем я пишу:

using(var con = new SqlConnection(@"Data Source=.;Initial Catalog=pubs;Integrated Security=True"))
            {
                con.Open();
                SqlCommand com = new SqlCommand("SELECT * FROM titles", con);
                var tran = con.BeginTransaction();
                com.Transaction = tran;
                try
                {
                    var dr = com.ExecuteReader();
                    while (dr.Read())
                    {
                        Console.WriteLine(dr[1].ToString());
                    }
                    dr.Close();
                    tran.Commit();
                }
                catch
                {
                    tran.Rollback();
                }
            }

Одна транзакция началась и Commited... Вот тут я не могу понять. В 1-м случае ведь обязательно тоже должна быть транзакция. А во втором получается стартует транзакция внутри которой еще одна транзакция с селектом?? Во что, конечно не верится. Тогда почему в 1-м случае в профайлере ничего не было?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.