Ten artykuł został przetłumaczony przez maszynę. Aby wyświetlić jego treść w języku angielskim, zaznacz pole wyboru Angielski. Możesz też wyświetlić angielski tekst w okienku wyskakującym, przesuwając wskaźnik myszy nad konkretny tekst”.
Tłumaczenie
Angielski

Klasa TransactionScope

.NET Framework (current version)
 

Data opublikowania: lipiec 2016

Powoduje, że blok kodu transakcyjnego. Ta klasa nie może być dziedziczona.

Przestrzeń nazw:   System.Transactions
Zestaw:  System.Transactions (w System.Transactions.dll)

System.Object
  System.Transactions.TransactionScope

public sealed class TransactionScope : IDisposable

NazwaOpis
System_CAPS_pubmethodTransactionScope()

Inicjuje nowe wystąpienie TransactionScope klasy.

System_CAPS_pubmethodTransactionScope(Transaction)

Inicjuje nowe wystąpienie TransactionScope klasy i ustawia określonej transakcji jako otoczenia transakcji, tak aby transakcyjnych zadań wykonywanych w zakresie używa tej transakcji.

System_CAPS_pubmethodTransactionScope(Transaction, TimeSpan)

Inicjuje nowe wystąpienie TransactionScope klas z określoną wartością limitu czasu i ustawia określonej transakcji jako otoczenia transakcji, tak aby transakcyjnych zadań wykonywanych w zakresie używa tej transakcji.

System_CAPS_pubmethodTransactionScope(Transaction, TimeSpan, EnterpriseServicesInteropOption)

Inicjuje nowe wystąpienie TransactionScope klas z określoną wartością limitu czasu i COM + współdziałanie wymagania i ustawia określonej transakcji jako otoczenia transakcji, tak aby transakcyjnych zadań wykonywanych w zakresie używa tej transakcji.

System_CAPS_pubmethodTransactionScope(Transaction, TimeSpan, TransactionScopeAsyncFlowOption)

[Obsługiwane w programie .NET Framework 4.5.1 i nowszych wersjach]

Inicjuje nowe wystąpienie TransactionScope klas z określoną wartością limitu czasu i ustawia określonej transakcji jako otoczenia transakcji, tak aby transakcyjnych zadań wykonywanych w zakresie używa tej transakcji.

System_CAPS_pubmethodTransactionScope(Transaction, TransactionScopeAsyncFlowOption)

[Obsługiwane w programie .NET Framework 4.5.1 i nowszych wersjach]

Inicjuje nowe wystąpienie TransactionScope klasy i ustawia określonej transakcji jako otoczenia transakcji, tak aby transakcyjnych zadań wykonywanych w zakresie używa tej transakcji.

System_CAPS_pubmethodTransactionScope(TransactionScopeAsyncFlowOption)

[Obsługiwane w programie .NET Framework 4.5.1 i nowszych wersjach]

Inicjuje nowe wystąpienie TransactionScope klasy z opcją określony przepływ asynchroniczny.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption)

Inicjuje nowe wystąpienie TransactionScope klasy przy użyciu określonych wymagań.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption, TimeSpan)

Inicjuje nowe wystąpienie TransactionScope klas z określoną wartością limitu czasu i wymagania.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption, TimeSpan, TransactionScopeAsyncFlowOption)

[Obsługiwane w programie .NET Framework 4.5.1 i nowszych wersjach]

Inicjuje nowe wystąpienie TransactionScope klasa określona wartość limitu czasu, wymagań i opcji Przepływ asynchroniczny.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption, TransactionOptions)

Inicjuje nowe wystąpienie TransactionScope klasy przy użyciu określonych wymagań.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption, TransactionOptions, EnterpriseServicesInteropOption)

Inicjuje nowe wystąpienie TransactionScope klasy z określonego zakresu i wymagania dotyczące współdziałania COM + i opcje transakcji.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption, TransactionOptions, TransactionScopeAsyncFlowOption)

[Obsługiwane w programie .NET Framework 4.5.1 i nowszych wersjach]

Inicjuje nowe wystąpienie TransactionScope klasy za pomocą opcji określone wymagania i Przepływ asynchroniczny.

System_CAPS_pubmethodTransactionScope(TransactionScopeOption, TransactionScopeAsyncFlowOption)

[Obsługiwane w programie .NET Framework 4.5.1 i nowszych wersjach]

Inicjuje nowe wystąpienie TransactionScope klasy za pomocą opcji określone wymagania i Przepływ asynchroniczny.

NazwaOpis
System_CAPS_pubmethodComplete()

Wskazuje, że wszystkie operacje w zakresie są ukończone pomyślnie.

System_CAPS_pubmethodDispose()

Kończy się w zakresie transakcji.

System_CAPS_pubmethodEquals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.(Dziedziczone z Object).

System_CAPS_pubmethodGetHashCode()

Służy jako domyślna funkcji mieszania.(Dziedziczone z Object).

System_CAPS_pubmethodGetType()

Pobiera Type bieżącego wystąpienia.(Dziedziczone z Object).

System_CAPS_pubmethodToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.(Dziedziczone z Object).

System.Transactions Infrastruktury zapewnia zarówno wyraźne programowania model na podstawie Transaction klasy, a także niejawne programowania modelu przy użyciu TransactionScope klasy, w którym transakcje są zarządzane automatycznie przez infrastrukturę.

System_CAPS_importantWażne

Zalecane jest, że tworzenie niejawne transakcji za pomocą TransactionScope klasy, tak aby kontekst transakcji otoczenia jest zarządzane automatycznie. Należy też używać TransactionScope i DependentTransaction klasy dla aplikacji, które korzystają z tej samej transakcji w wielu wywołań funkcji lub wielu wywołań wątku. Aby uzyskać więcej informacji na ten model, zobacz Implementing An Implicit Transaction Using Transaction Scope tematu. Aby uzyskać więcej informacji dotyczących zapisywania transakcyjnych aplikacji, zobacz Writing A Transactional Application.

Podczas tworzenia wystąpienia TransactionScope przez new instrukcji, Menedżer transakcji określa, która transakcja wziąć udział w. Po określeniu zakresu zawsze uczestniczy w danej transakcji. Decyzja opiera się na dwa czynniki: czy transakcja otoczenia jest obecny i wartość TransactionScopeOption parametr w konstruktorze. Transakcja otoczenia jest transakcji, które wykonuje kod. Odwołanie do otoczenia transakcji można uzyskać przez wywołanie metody statycznej Current Właściwość Transaction klasy. Więcej informacji o sposobie użycia tego parametru, zobacz sekcję "Zarządzanie przepływem transakcji" Implementing An Implicit Transaction Using Transaction Scope tematu.

Jeśli nie wystąpi wyjątek w zakresie transakcji (oznacza to, między inicjowania TransactionScope obiektu i telefonicznej z jego Dispose Metoda), następnie transakcji, w których uczestniczy zakres będzie mógł kontynuować. Jeśli wystąpi wyjątek w zakresie transakcji, transakcji, w których uczestniczy zostanie wycofana.

Po zakończeniu aplikacji wszelkimi działaniami chce wykonać w ramach transakcji, należy wywołać Complete metody tylko raz na informują menedżera transakcji, że jest dopuszczalne można zatwierdzić transakcji. Nie można wywołać tej metody przerywa transakcję.

Wywołanie Dispose metody oznacza koniec zakresu transakcji. Wyjątki, które występują po wywołaniu tej metody nie może mieć wpływ na transakcji.

W przypadku zmodyfikowania wartości Current wewnątrz zakresu, wyjątek jest generowany, gdy Dispose jest wywoływana. Jednak na końcu zakresu przywróceniu poprzedniej wartości. Ponadto, jeśli chcesz wywołać Dispose na Current wewnątrz zakresu transakcji, która utworzyła transakcję, transakcji przerywa pod koniec zakresu.

W poniższym przykładzie pokazano sposób użycia TransactionScope klasy do definiowania bloku kodu, aby uczestniczyć w transakcji.

// This function takes arguments for 2 connection strings and commands to create a transaction 
// involving two SQL Servers. It returns a value > 0 if the transaction is committed, 0 if the 
// transaction is rolled back. To test this code, you can connect to two different databases 
// on the same server by altering the connection string, or to another 3rd party RDBMS by 
// altering the code in the connection2 code block.
static public int CreateTransactionScope(
    string connectString1, string connectString2,
    string commandText1, string commandText2)
{
    // Initialize the return value to zero and create a StringWriter to display results.
    int returnValue = 0;
    System.IO.StringWriter writer = new System.IO.StringWriter();

    try
    {
        // Create the TransactionScope to execute the commands, guaranteeing
        // that both commands can commit or roll back as a single unit of work.
        using (TransactionScope scope = new TransactionScope())
        {
            using (SqlConnection connection1 = new SqlConnection(connectString1))
            {
                // Opening the connection automatically enlists it in the 
                // TransactionScope as a lightweight transaction.
                connection1.Open();

                // Create the SqlCommand object and execute the first command.
                SqlCommand command1 = new SqlCommand(commandText1, connection1);
                returnValue = command1.ExecuteNonQuery();
                writer.WriteLine("Rows to be affected by command1: {0}", returnValue);

                // If you get here, this means that command1 succeeded. By nesting
                // the using block for connection2 inside that of connection1, you
                // conserve server and network resources as connection2 is opened
                // only when there is a chance that the transaction can commit.   
                using (SqlConnection connection2 = new SqlConnection(connectString2))
                {
                    // The transaction is escalated to a full distributed
                    // transaction when connection2 is opened.
                    connection2.Open();

                    // Execute the second command in the second database.
                    returnValue = 0;
                    SqlCommand command2 = new SqlCommand(commandText2, connection2);
                    returnValue = command2.ExecuteNonQuery();
                    writer.WriteLine("Rows to be affected by command2: {0}", returnValue);
                }
            }

            // The Complete method commits the transaction. If an exception has been thrown,
            // Complete is not  called and the transaction is rolled back.
            scope.Complete();

        }

    }
    catch (TransactionAbortedException ex)
    {
        writer.WriteLine("TransactionAbortedException Message: {0}", ex.Message);
    }
    catch (ApplicationException ex)
    {
        writer.WriteLine("ApplicationException Message: {0}", ex.Message);
    }

    // Display messages.
    Console.WriteLine(writer.ToString());

    return returnValue;
}

.NET Framework
Dostępne od 2.0

Tego typu są bezpieczne dla wątków.

Przestrzeń nazw System.Transactions
Implementing An Implicit Transaction Using Transaction Scope

Powrót do początku
Pokaż: