Прочитать на английском

Поделиться через


IDbTransaction Интерфейс

Определение

Представляет транзакцию, выполняемую с источником данных. Реализуется с помощью поставщиков данных .NET, у которых есть доступ к реляционным базам данных.

public interface IDbTransaction : IDisposable
Производный
Реализации

Примеры

В следующем примере создаются экземпляры производных классов и SqlConnectionSqlTransaction. В ней также показано, как использовать методы BeginTransaction, Commitи Rollback .

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction();

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

Комментарии

Интерфейс IDbTransaction позволяет наследуемому классу реализовать класс Transaction, который представляет транзакцию, выполняемую в источнике данных. Дополнительные сведения о классах транзакций см. в разделе Транзакции и параллелизм.

Приложение не создает экземпляр IDbTransaction интерфейса напрямую, а создает экземпляр класса, наследующего IDbTransaction.

Классы, которые наследуются IDbTransaction , должны реализовывать наследуемые члены и, как правило, определять дополнительные члены для добавления функций, зависящих от поставщика. Например, IDbTransaction интерфейс определяет Commit метод . В свою очередь, OleDbTransaction класс наследует это свойство, а также определяет Begin метод .

Примечания для тех, кто реализует этот метод

Чтобы повысить согласованность между поставщиками данных платформа .NET Framework, назовите наследующий класс в форме Prv Transaction, где Prv — это универсальный префикс, предоставленный всем классам в определенном пространстве имен поставщика данных платформа .NET Framework. Например, Sql — это префикс SqlTransaction класса в System.Data.SqlClient пространстве имен .

Свойства

Connection

Указывает объект Connection для связывания с транзакцией.

IsolationLevel

Указывает IsolationLevel для этой транзакции.

Методы

Commit()

Фиксирует транзакцию базы данных.

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

(Унаследовано от IDisposable)
Rollback()

Откатывает транзакцию из состояния ожидания.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1