Sdílet prostřednictvím


Návod: Ukládání dat do transakce v aplikacích .NET Framework

Poznámka:

Datové sady a související třídy jsou staršími technologiemi rozhraní .NET Framework z počátku 2000, které aplikacím umožňují pracovat s daty v paměti, zatímco aplikace jsou odpojené od databáze. Jsou zvláště užitečné pro aplikace, které uživatelům umožňují upravovat data a uchovávat změny zpět do databáze. I když se datové sady ukázaly jako velmi úspěšná technologie, doporučujeme, aby nové aplikace .NET používaly Entity Framework Core. Entity Framework poskytuje přirozenější způsob práce s tabulkovými daty jako objektovými modely a má jednodušší programovací rozhraní.

Tento názorný postup ukazuje, jak uložit data v transakci pomocí System.Transactions oboru názvů. V tomto názorném postupu vytvoříte model Windows Forms aplikaci. Průvodce konfigurací zdroje dat použijete k vytvoření datové sady pro dvě tabulky v ukázkové databázi Northwind. Do formuláře Windows přidáte ovládací prvky vázané na data a upravíte kód tlačítka Pro uložení BindingNavigatoru tak, aby se databáze aktualizovala uvnitř TransactionScope.

Požadavky

K dokončení tohoto kurzu potřebujete úlohy vývoje desktopových aplikací .NET a ukládání a zpracování dat nainstalované v sadě Visual Studio. Pokud je chcete nainstalovat, otevřete Instalační program pro Visual Studio a zvolte Upravit (nebo Další>úpravy) vedle verze sady Visual Studio, kterou chcete upravit. Viz Úprava sady Visual Studio.

Tento názorný postup používá SQL Server Express LocalDB a ukázkovou databázi Northwind.

  1. Pokud nemáte SQL Server Express LocalDB, nainstalujte ho buď ze stránky pro stažení SQL Serveru Express, nebo prostřednictvím Instalační program pro Visual Studio. V Instalační program pro Visual Studio lze SQL Server Express LocalDB nainstalovat jako součást úlohy vývoje desktopových aplikací .NET nebo jako jednotlivé komponenty.

  2. Následujícím postupem nainstalujte ukázkovou databázi Northwind:

    1. V sadě Visual Studio otevřete okno Průzkumník objektů SQL Serveru. (SQL Server Průzkumník objektů se instaluje jako součást úlohy ukládání a zpracování dat v Instalační program pro Visual Studio.) Rozbalte uzel SQL Serveru. Klikněte pravým tlačítkem na instanci LocalDB a vyberte Nový dotaz.

      Otevře se okno editoru dotazů.

    2. Zkopírujte do schránky skript Northwind Transact-SQL. Tento skript T-SQL vytvoří zcela novou databázi Northwind a naplní ji daty.

    3. Vložte skript T-SQL do editoru dotazů a pak zvolte tlačítko Spustit .

      Po krátké době se dotaz dokončí a vytvoří se databáze Northwind.

Vytvoření model Windows Forms aplikace

Prvním krokem je vytvoření aplikace model Windows Forms (.NET Framework).

  1. V sadě Visual Studio v nabídce Soubor vyberte Nový>projekt.

  2. V levém podokně rozbalte visual C# nebo Visual Basic a pak vyberte Plochu windows.

  3. V prostředním podokně vyberte typ projektu aplikace model Windows Forms.

  4. Pojmenujte projekt SavingDataInATransactionWalkthrough a pak zvolte OK.

    Projekt SavingDataInATransactionWalkthrough se vytvoří a přidá do Průzkumník řešení.

Vytvoření zdroje dat databáze

Tento krok používá Průvodce konfigurací zdroje dat k vytvoření zdroje dat na Customers základě tabulek a Orders tabulek v ukázkové databázi Northwind.

  1. Pokud chcete otevřít okno Zdroje dat, vyberte v nabídce Data možnost Zobrazit zdroje dat.

  2. V okně Zdroje dat vyberte Přidat nový zdroj dat a spusťte Průvodce konfigurací zdroje dat.

  3. Na obrazovce Zvolit typ zdroje dat vyberte Databázi a pak vyberte Další.

  4. Na obrazovce Zvolit data Připojení ion proveďte jednu z následujících věcí:

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

      nebo

    • Výběrem možnosti Nový Připojení ion spustíte dialogové okno Přidat nebo upravit Připojení ion a vytvoříte připojení k databázi Northwind.

  5. Pokud vaše databáze vyžaduje heslo, vyberte možnost zahrnout citlivá data a pak vyberte Další.

  6. Na obrazovce Uložit připojovací řetězec na obrazovce Konfigurační soubor aplikace vyberte Další.

  7. Na obrazovce Zvolit databázové objekty rozbalte uzel Tabulky.

  8. Vyberte tabulky Customers a Orders pak vyberte Dokončit.

    NorthwindDataSet se přidá do projektu a CustomersOrders tabulky se zobrazí v okně Zdroje dat.

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

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

  1. V okně Zdroje dat rozbalte uzel Zákazníci .

  2. Přetáhněte hlavní uzel Zákazníci z okna Zdroje dat do formuláře Form1.

    Ovládací DataGridView prvek a pruh nástrojů (BindingNavigator) pro navigaci záznamů se zobrazí ve formuláři. NorthwindDataSet, CustomersTableAdaptera BindingSourceBindingNavigator objeví se v zásobníku komponent.

  3. Přetáhněte související uzel Objednávky (ne hlavní uzel Objednávky, ale související podřízený uzel tabulky pod sloupec Fax) do formuláře pod CustomersDataGridView.

    Ve formuláři se zobrazí A DataGridView . V zásobníku komponent se zobrazí a OrdersTableAdapterBindingSource zobrazí se.

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

Transakce používají System.Transactions obor názvů. Ve výchozím nastavení se nepřidá odkaz na sestavení system.transactions, takže ho musíte přidat ručně.

Přidání odkazu na soubor System.Transactions DLL

  1. V nabídce Projekt vyberte Přidat odkaz.

  2. Vyberte System.Transactions (na .NET kartě) a pak vyberte OK.

    Do projektu se přidá odkaz na System.Transactions .

Úprava kódu v tlačítku SaveItem bindingNavigatoru

Pro první tabulku vloženou do formuláře se kód ve výchozím nastavení přidá do click události tlačítka Uložit na kartě BindingNavigator. Pokud chcete aktualizovat další tabulky, musíte ručně přidat kód. Pro účely tohoto názorného postupu refaktorujeme existující kód pro uložení z obslužné rutiny události kliknutí na tlačítko Uložit. Vytvoříme také několik dalších metod, které poskytují konkrétní funkce aktualizace na základě toho, jestli je potřeba přidat nebo odstranit řádek.

Úprava automaticky generovaného kódu pro uložení

  1. Vyberte tlačítko Uložit na customersBindingNavigator (tlačítko s ikonou diskety).

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

    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í změny v souvisejících datech je uspořádané takto:

  • Odstraňte podřízené záznamy. (V tomto případě odstraňte záznamy z Orders tabulky.)

  • Odstraňte nadřazené záznamy. (V tomto případě odstraňte záznamy z Customers tabulky.)

  • Vložte nadřazené záznamy. (V tomto případě vložte záznamy do Customers tabulky.)

  • Vložte podřízené záznamy. (V tomto případě vložte záznamy do Orders tabulky.)

Odstranění existujících objednávek

  • Do formuláře 1 přidejte následující DeleteOrders metodu:

    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");
            }
        }
    }
    

Odstranění stávajících zákazníků

  • Do formuláře 1 přidejte následující DeleteCustomers metodu:

    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ých zákazníků

  • Do formuláře 1 přidejte následující AddNewCustomers metodu:

    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ých objednávek

  • Do formuláře 1 přidejte následující AddNewOrders metodu:

    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

Stisknutím klávesy F5 spusťte aplikaci.