Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
IDbConnection Connection { get; } IsolationLevel IsolationLevel { get; } void Commit(); void Rollback();}Обратите внимание на свойство
ConnectionCommit()Rollback()На заметку! Свойство
IsolationLevelПомимо членов, определенных в интерфейсе
IDbTransactionSqlTransactionSave()Save()SqlTransactionRollback()Rollback()Добавление метода транзакции в inventoryDal
Давайте посмотрим, как работать с транзакциями ADO.NET программным образом. Начните с открытия созданного ранее проекта библиотеки кода
AutoLot.DalInventoryDalProcessCreditRisk()CreditRiskspublic void ProcessCreditRisk(bool throwEx, int customerId){ OpenConnection(); // Найти имя текущего клиента по идентификатору. string fName; string lName; var cmdSelect = new SqlCommand( "Select * from Customers where Id = @customerId", _sqlConnection); SqlParameter paramId = new SqlParameter { ParameterName = "@customerId", SqlDbType = SqlDbType.Int, Value = customerId, Direction = ParameterDirection.Input }; cmdSelect.Parameters.Add(paramId); using (var dataReader = cmdSelect.ExecuteReader()) { if (dataReader.HasRows) { dataReader.Read(); fName = (string) dataReader["FirstName"]; lName = (string) dataReader["LastName"]; } else { CloseConnection(); return; } } cmdSelect.Parameters.Clear(); // Создать объекты команды, представляющие каждый шаг операции. var cmdUpdate = new SqlCommand( "Update Customers set LastName = LastName + ' (CreditRisk) ' where Id = @customerId", _sqlConnection); cmdUpdate.Parameters.Add(paramId); var cmdInsert = new SqlCommand( "Insert Into CreditRisks (CustomerId,FirstName, LastName) Values( @CustomerId, @FirstName, @LastName)", _sqlConnection); SqlParameter parameterId2 = new SqlParameter { ParameterName = "@CustomerId", SqlDbType = SqlDbType.Int, Value = customerId, Direction = ParameterDirection.Input }; SqlParameter parameterFirstName = new SqlParameter { ParameterName = "@FirstName", Value = fName, SqlDbType = SqlDbType.NVarChar, Size = 50, Direction = ParameterDirection.Input }; SqlParameter parameterLastName = new SqlParameter { ParameterName = "@LastName", Value = lName, SqlDbType = SqlDbType.NVarChar, Size = 50,