Не удалось выполнить преобразование при преобразовании строки символов в uniqueidentifier - откат транзакции не выполняется - PullRequest
0 голосов
/ 13 ноября 2018

Реальная проблема не в этом - «Преобразование не удалось при преобразовании строки символов в uniqueidentifier», но проблема в том, что транзакция не откатывается после того, как вы столкнулись с проблемой.

Мой код здесь,

var connectionstring = "Server= ****; Database= ****; Integrated Security=True;";
        var errorInformation = new List<string>();

        using (SqlConnection objConn = new SqlConnection(connectionstring))
        {
            objConn.Open();
            var objTrans = objConn.BeginTransaction(); // Begins here
            var sql = $"insert into tblProject values('7', 'TestProject')";
            SqlCommand insertCommand = new SqlCommand(sql, objConn, objTrans);

            try
            {
                insertCommand.ExecuteNonQuery();
                // ProjectID is a unique Identifier in database
                SqlCommand cmd = new SqlCommand("SELECT * FROM SOMEOTHERTABLE WHERE PROJECTID=''", objConn, objTrans);
                cmd.CommandType = CommandType.Text;
                var dataTable = new DataTable("SomeTableName");
                using (var adapter = new SqlDataAdapter(cmd))
                {
                    var dt = adapter.Fill(dataTable); // Exception happens here
                }
                objTrans.Commit(); // Commit here
            }

            catch (Exception ex)
            {
                errorInformation.Add(ex.Message);
            }
            var sql1 = $"insert into tblProject values('8', 'TestProject')";
            SqlCommand objCmd2 = new SqlCommand(sql1, objConn, objTrans);
            objCmd2.ExecuteNonQuery();

            if (errorInformation.Any())
            {
                objTrans.Rollback(); // Rollback here
            }
        }

Запрос, который выполняется после исключения с использованием того же объекта подключения, не будет откатываться. Это ошибка, которую Microsoft должна изучить. В противном случае их функция отката не является надежной.

Я ожидаю, что моя вторая команда вставки не будет выполнена, или мой откат будет успешным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...