Защита от параллелизма транзакции (тип транзакции; Transaction IsolationLevel)

Компонент среднего уровня будет выполнять процедуры доступа к данным в приложении. Компонент вызовет несколько хранимых процедур SQL Server для выполнения обновлений базы данных. Все эти вызовы процедур выполняются под управлением одной транзакции. Код для среднего уровня будет реализовывать следующие объекты:

SqlCommand comm = connection.CreateCommand();
SqlTransaction trans;

Как добавить код в компонент, чтобы указать максимально возможный уровень защиты от таких ошибок (два пользователя пытаются одновременно обновлять одни и те же данные).

1 ответ

Решение

Ты используешь IsolationLevel:

using (SqlConnection con = new SqlConnection(connectionString))
{
    using (SqlTransaction tran = con.BeginTransaction(IsolationLevel.Serializable))
    {
        SqlCommand cmd = con.CreateCommand();

        // etc...

        con.Open();


    }
}

Вам все еще нужно будет перехватить соответствующие исключения SQL...

Другие вопросы по тегам