Sdílet prostřednictvím


Názorný postup: Ukládání dat v transakci

Názorný transakce pomocí uložení dat System.Transactions oboru názvů.V tomto příkladu Customers a Orders tabulek z ukázkové databáze Northwind.

Požadavky

Tento postup vyžaduje přístup k ukázkové databázi Northwind.Informace o nastavení ukázkové databáze Northwind, Jak: Instalace ukázkové databáze.

Vytvoření aplikace pro Windows

Prvním krokem je vytvoření Aplikace systému Windows.

Vytvořit nový projekt systému Windows

  1. V aplikaci Visual Studio z soubor nabídka, vytvoření nového projektu.

  2. Název projektu SavingDataInATransactionWalkthrough.

  3. Vyberte Aplikace systému Windows a na OK.Další informace naleznete v tématu Tvorba klientských aplikací.

    SavingDataInATransactionWalkthrough projektu je vytvořena a přidána do Aplikaci Solution Explorer.

Vytváření zdroje dat databáze

Tento krok se používá Průvodce konfigurací zdroje dat vytvořit zdroj dat založený na Customers a Orders tabulek v ukázkové databázi Northwind.

Vytvořit zdroj dat

  1. V nabídce Data klikněte na tlačítko Zobrazit zdroje dat.

  2. V Zdroje dat vyberte Přidat nový zdroj dat spustit Průvodce konfigurací zdroje dat.

  3. Vyberte Databázi na stránce Zvolit datový typ zdrojová databáze a potom klikněte na tlačítko Next.

  4. Na Zvolte datové připojení stránky proveďte jeden z následujících:

    • Pokud datové připojení k ukázkové databázi Northwind je k dispozici v rozevíracím seznamu, vyberte ji.

      -nebo-

    • Vyberte Nové připojení spustit Přidat nebo změnit připojení dialogovém okně pole a vytvořit připojení k databázi Northwind.Další informace naleznete v tématu Přidat či upravte dialogové okno připojení (Obecné).

  5. Pokud databáze vyžaduje heslo, vyberte možnost obsahují citlivá data a potom klepněte na tlačítko Další.

  6. Klepněte na tlačítko Další na Uložit řetězec připojení v souboru konfigurace aplikace stránku.

  7. Rozbalte tabulek uzel zvolit databázové objekty stránky.

  8. Vyberte Customers a Orders tabulky a pak klepněte na tlačítko Dokončit.

    NorthwindDataSet je do projektu a Customers a Orders tabulky se zobrazí v Zdroje dat okna.

Přidání ovládacích prvků do formuláře

Ovládací prvky vázané dat můžete vytvořit přetažením položek z Zdroje dat okna, do formuláře.

Vytvořit data vázané ovládací prvky na formuláři systému Windows

Přidávání odkazu na sestavení System.Transactions

Použití transakcí System.Transactions oboru názvů.Projektu odkaz na sestavení objektu system.transactions není přidán ve výchozím, je nutné přidat ručně.

Přidat odkaz na soubor knihovny DLL objektu System.Transactions

  1. Z projektu nabídce zvolte Přidat odkaz na.

  2. Vyberte objektu System.Transactions (na .NET kartu) a klepněte na tlačítko OK.

    Odkaz na objektu System.Transactions je do projektu.

Úpravy kódu BindingNavigator provádí SaveItem tlačítka

Ve výchozím nastavení pro první tabulky vyřazené do formuláře, kód je přidán do click události uložit tlačítka BindingNavigator.Je třeba ručně přidat kód aktualizovat libovolné další tabulky.Tento návod jsme refactor, uložit kód z uložit existující tlačítka klepněte na obslužnou rutinu události a vytvořit další metody několik funkcí konkrétní aktualizace, zda je řádek přidány nebo odstraněny na základě.

Změna automaticky generovaný uložit kód

  1. Poklepejte Uložit tlačítka CustomersBindingNavigator (tlačítko s ikonou diskety).

  2. Nahraďte metodu CustomersBindingNavigatorSaveItem_Click následujícím kódem:

    Private Sub CustomersBindingNavigatorSaveItem_Click() Handles CustomersBindingNavigatorSaveItem.Click
        UpdateData()
    End Sub
    
    Private Sub UpdateData()
        Me.Validate()
        Me.CustomersBindingSource.EndEdit()
        Me.OrdersBindingSource.EndEdit()
    
        Using updateTransaction As New Transactions.TransactionScope
    
            DeleteOrders()
            DeleteCustomers()
            AddNewCustomers()
            AddNewOrders()
    
            updateTransaction.Complete()
            NorthwindDataSet.AcceptChanges()
        End Using
    End Sub
    
    private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        UpdateData();
    }
    
    private void UpdateData()
    {
        this.Validate();
        this.customersBindingSource.EndEdit();
        this.ordersBindingSource.EndEdit();
    
        using (System.Transactions.TransactionScope updateTransaction = 
            new System.Transactions.TransactionScope())
        {
            DeleteOrders();
            DeleteCustomers();
            AddNewCustomers();
            AddNewOrders();
    
            updateTransaction.Complete();
            northwindDataSet.AcceptChanges();
        }
    }
    

Pořadí slučování změn souvisejících dat je následující:

  • Odstranění podřízených záznamů (v tomto případě odstranit záznamy Orders tabulky)

  • Odstranění záznamů nadřazené (v tomto případě odstranit záznamy Customers tabulky)

  • Vložení záznamů nadřazené (v tomto případě vložit záznamy Customers tabulky)

  • Vložení podřízené záznamy (v tomto případě vložit záznamy Orders tabulky)

Odstranit existující objednávky

  • Přidejte následující DeleteOrders metody Form1:

    Private Sub DeleteOrders()
    
        Dim deletedOrders As NorthwindDataSet.OrdersDataTable
        deletedOrders = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted),
            NorthwindDataSet.OrdersDataTable)
    
        If Not IsNothing(deletedOrders) Then
            Try
                OrdersTableAdapter.Update(deletedOrders)
    
            Catch ex As Exception
                MessageBox.Show("DeleteOrders Failed")
            End Try
        End If
    End Sub
    
    private void DeleteOrders()
    {
        NorthwindDataSet.OrdersDataTable deletedOrders;
        deletedOrders = (NorthwindDataSet.OrdersDataTable)
            northwindDataSet.Orders.GetChanges(DataRowState.Deleted);
    
        if (deletedOrders != null)
        {
            try
            {
                ordersTableAdapter.Update(deletedOrders);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("DeleteOrders Failed");
            }
        }
    }
    

Odstranit existující zákazníky

  • Přidejte následující DeleteCustomers metody Form1:

    Private Sub DeleteCustomers()
    
        Dim deletedCustomers As NorthwindDataSet.CustomersDataTable
        deletedCustomers = CType(NorthwindDataSet.Customers.GetChanges(Data.DataRowState.Deleted),
            NorthwindDataSet.CustomersDataTable)
    
        If Not IsNothing(deletedCustomers) Then
            Try
                CustomersTableAdapter.Update(deletedCustomers)
    
            Catch ex As Exception
                MessageBox.Show("DeleteCustomers Failed" & vbCrLf & ex.Message)
            End Try
        End If
    End Sub
    
    private void DeleteCustomers()
    {
        NorthwindDataSet.CustomersDataTable deletedCustomers;
        deletedCustomers = (NorthwindDataSet.CustomersDataTable)
            northwindDataSet.Customers.GetChanges(DataRowState.Deleted);
    
        if (deletedCustomers != null)
        {
            try
            {
                customersTableAdapter.Update(deletedCustomers);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("DeleteCustomers Failed");
            }
        }
    }
    

Přidání nové zákazníky

  • Přidejte následující AddNewCustomers metody Form1:

    Private Sub AddNewCustomers()
    
        Dim newCustomers As NorthwindDataSet.CustomersDataTable
        newCustomers = CType(NorthwindDataSet.Customers.GetChanges(Data.DataRowState.Added),
            NorthwindDataSet.CustomersDataTable)
    
        If Not IsNothing(newCustomers) Then
            Try
                CustomersTableAdapter.Update(newCustomers)
    
            Catch ex As Exception
                MessageBox.Show("AddNewCustomers Failed" & vbCrLf & ex.Message)
            End Try
        End If
    End Sub
    
    private void AddNewCustomers()
    {
        NorthwindDataSet.CustomersDataTable newCustomers;
        newCustomers = (NorthwindDataSet.CustomersDataTable)
            northwindDataSet.Customers.GetChanges(DataRowState.Added);
    
        if (newCustomers != null)
        {
            try
            {
                customersTableAdapter.Update(newCustomers);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("AddNewCustomers Failed");
            }
        }
    }
    

Přidání nové objednávky

  • Přidejte následující AddNewOrders metody Form1:

    Private Sub AddNewOrders()
    
        Dim newOrders As NorthwindDataSet.OrdersDataTable
        newOrders = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added),
            NorthwindDataSet.OrdersDataTable)
    
        If Not IsNothing(newOrders) Then
            Try
                OrdersTableAdapter.Update(newOrders)
    
            Catch ex As Exception
                MessageBox.Show("AddNewOrders Failed" & vbCrLf & ex.Message)
            End Try
        End If
    End Sub
    
    private void AddNewOrders()
    {
        NorthwindDataSet.OrdersDataTable newOrders;
        newOrders = (NorthwindDataSet.OrdersDataTable)
            northwindDataSet.Orders.GetChanges(DataRowState.Added);
    
        if (newOrders != null)
        {
            try
            {
                ordersTableAdapter.Update(newOrders);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("AddNewOrders Failed");
            }
        }
    }
    

Spuštění aplikace

Spuštění aplikace

  • Stisknutím klávesy F5 spustíte aplikaci.

Viz také

Úkoly

Jak: uložení dat pomocí transakce

Koncepty

Enlisting in Distributed Transactions

Leveraging System.Transactions

Příprava aplikace pro příjem dat.

Načítání dat do aplikace

Ovládací prvky vazby na Data v aplikaci Visual Studio

Data v aplikaci pro úpravy

Ověření dat

Ukládání dat

Další zdroje

Performing Transactions

Připojení k datům v aplikaci Visual Studio