Sdílet prostřednictvím


Vytváření vazeb objektů v sadě Visual Studio

Visual Studio obsahuje návrh nástroje pro práci s vlastní objekty (nikoli na jiné zdroje dat entity, soubory a služby) jako zdroj dat v aplikaci.

Požadavky na objekt

Jediným požadavkem u vlastních objektů pro práci s daty návrhové nástroje v sadě Visual Studio je objekt nejméně jednu vlastnost veřejné.

Vlastní objekty obecně nevyžadují žádné specifické rozhraní konstruktory nebo atributy jako zdroj dat pro aplikaci.Však chcete-li přetáhnout objekt z Zdroje dat okno plochy návrhu vytvořit ovládací prvek vázán na data, a pokud objekt implementuje ITypedList nebo IListSource rozhraní objektu musí mít výchozí konstruktor (, konstruktor).Visual Studio nelze vytvořit instanci objekt zdroje dat a zobrazí chybu při přetažení položky na plochu návrhu.

Příklady použití vlastní objekty jako zdroje dat

Při implementaci logiky aplikace při práci s objekty jako zdroj dat popisována různými způsoby, existuje několik standardních operací, které lze zjednodušit pomocí Visual Studio–generated TableAdapter objektů.Tato stránka vysvětluje, jak implementovat tyto standardní procesy pomocí TableAdapters; to není určen jako vodítko pro vytvoření vlastní objekty.Například se obvykle provádí následující standardní operace bez ohledu na konkrétní implementaci objekty nebo logiky aplikace:

  • Načítání dat do objektů (obvykle z databáze).

  • Vytvoření typové kolekci objektů.

  • Objekty k přidání a odebrání objektů z kolekce.

  • Zobrazení dat objektu uživatelům ve formuláři.

  • Změny nebo úpravy dat v objektu.

  • Uložení dat z objekty zpět do databáze.

[!POZNÁMKA]

Pro lepší pochopení a poskytnout kontextu příklady na této stránce, doporučujeme dokončit následující: Návod: Připojování k datům v objektech (Windows Forms).Tento názorný postup vytvoří objekty, které jsou uvedeny na této stránce nápovědy.

Načítání dat do objektů

Například načtení dat do objekty pomocí TableAdapters.Ve výchozím nastavení jsou TableAdapters s dva druhy metod, které slouží k načtení dat z databáze a naplnění tabulky dat vytvořen.

  • TableAdapter.Fill Metoda vyplní existující tabulky data vrácená data.

  • TableAdapter.GetData Metoda vrátí nové tabulky dat obsadit.

Nejjednodušší způsob, jak načíst vlastní objekty s daty je volání TableAdapter.GetData metoda smyčku kolekce řádků vrácených dat tabulky a naplnit každý objekt s hodnotami v každém řádku.Můžete vytvořit GetData metodu, která vrací tabulku vyplněných dat pro libovolný dotaz do TableAdapter.

[!POZNÁMKA]

Visual Studio názvy dotazy TableAdapter Fill a GetData ve výchozím nastavení, ale tyto názvy lze změnit na libovolný platný název metody.

Následující příklad ukazuje, jak procházet řádky v tabulce dat a naplnit objekt s daty:

Příklad úplného kódu naleznete v Návod: Připojování k datům v objektech (Windows Forms).

Private Sub LoadCustomers()
    Dim customerData As NorthwindDataSet.CustomersDataTable =
        CustomersTableAdapter1.GetTop5Customers()

    Dim customerRow As NorthwindDataSet.CustomersRow

    For Each customerRow In customerData
        Dim currentCustomer As New Customer()
        With currentCustomer

            .CustomerID = customerRow.CustomerID
            .CompanyName = customerRow.CompanyName

            If Not customerRow.IsAddressNull Then
                .Address = customerRow.Address
            End If 

            If Not customerRow.IsCityNull Then
                .City = customerRow.City
            End If 

            If Not customerRow.IsContactNameNull Then
                .ContactName = customerRow.ContactName
            End If 

            If Not customerRow.IsContactTitleNull Then
                .ContactTitle = customerRow.ContactTitle
            End If 

            If Not customerRow.IsCountryNull Then
                .Country = customerRow.Country
            End If 

            If Not customerRow.IsFaxNull Then
                .Fax = customerRow.Fax
            End If 

            If Not customerRow.IsPhoneNull Then
                .Phone = customerRow.Phone
            End If 

            If Not customerRow.IsPostalCodeNull Then
                .PostalCode = customerRow.PostalCode
            End If 

            If Not customerRow.Is_RegionNull Then
                .Region = customerRow._Region
            End If 

        End With

        LoadOrders(currentCustomer)
        CustomerBindingSource.Add(currentCustomer)
    Next 
End Sub
private void LoadCustomers()
{
    NorthwindDataSet.CustomersDataTable customerData = 
        customersTableAdapter1.GetTop5Customers();

    foreach (NorthwindDataSet.CustomersRow customerRow in customerData)
    {
        Customer currentCustomer = new Customer();
        currentCustomer.CustomerID = customerRow.CustomerID;
        currentCustomer.CompanyName = customerRow.CompanyName;

        if (customerRow.IsAddressNull() == false)
        {
            currentCustomer.Address = customerRow.Address;
        }

        if (customerRow.IsCityNull() == false)
        {
            currentCustomer.City = customerRow.City;
        }

        if (customerRow.IsContactNameNull() == false)
        {
            currentCustomer.ContactName = customerRow.ContactName;
        }

        if (customerRow.IsContactTitleNull() == false)
        {
            currentCustomer.ContactTitle = customerRow.ContactTitle;
        }

        if (customerRow.IsCountryNull() == false)
        {
            currentCustomer.Country = customerRow.Country;
        }

        if (customerRow.IsFaxNull() == false)
        {
            currentCustomer.Fax = customerRow.Fax;
        }

        if (customerRow.IsPhoneNull() == false)
        {
            currentCustomer.Phone = customerRow.Phone;
        }

        if (customerRow.IsPostalCodeNull() == false)
        {
            currentCustomer.PostalCode = customerRow.PostalCode;
        }

        if (customerRow.IsRegionNull() == false)
        {
            currentCustomer.Region = customerRow.Region;
        }

        LoadOrders(currentCustomer);
        customerBindingSource.Add(currentCustomer);
    }
}

Vytváření zadané kolekce objektů

Můžete vytvořit kolekce třídy pro objekty nebo použít zadaný kolekcí, které automaticky poskytované BindingSource – komponenta.

Při vytváření třídy vlastní kolekce, objekty, doporučujeme dědí vlastnosti z BindingList.Tato obecná třída poskytuje funkce správy kolekce, jakož i schopnost zvýšit události, které odeslat oznámení do infrastruktury vázání dat v model Windows Forms.

Automaticky generované v kolekci BindingSource používá BindingList jeho zadané kolekce.Pokud aplikace nevyžaduje další funkce a poté můžete udržovat v rámci kolekce BindingSource.Další informace naleznete List vlastnost BindingSource třídy.

[!POZNÁMKA]

Pokud není pomocí funkcí základní implementace vyžadovat kolekci BindingList, a pak vytvořte vlastní kolekci tak můžete přidat do třídy podle potřeby.

Následující kód ukazuje, jak vytvořit třídu pro kolekci silnými Order objekty:

''' <summary> 
''' A collection of Orders 
''' </summary> 
Public Class Orders
    Inherits System.ComponentModel.BindingList(Of Order)

    ' Add any additional functionality required by your collection. 

End Class
/// <summary> 
/// A collection of Orders 
/// </summary> 
public class Orders: System.ComponentModel.BindingList<Order>
{
    // Add any additional functionality required by your collection.
}

Přidání objektů do kolekce

Přidat objekty do kolekce voláním Add metoda třídy vlastní kolekce, nebo z BindingSource.

Například přidat do kolekce pomocí BindingSource, najdete LoadCustomers metoda v Návod: Připojování k datům v objektech (Windows Forms).

Příklad přidání objektů do vlastní kolekce, naleznete LoadOrders metoda v Návod: Připojování k datům v objektech (Windows Forms).

[!POZNÁMKA]

Add Metoda je poskytován automaticky vlastní kolekce při dědit z BindingList.

Následující kód ukazuje, jak přidat objekty do zadané kolekce v BindingSource:

Dim currentCustomer As New Customer()
CustomerBindingSource.Add(currentCustomer)
Customer currentCustomer = new Customer();
customerBindingSource.Add(currentCustomer);

Následující kód ukazuje, jak přidat objekty do zadané kolekce, které dědí z BindingList:

[!POZNÁMKA]

V tomto příkladu Orders kolekce je vlastnost Customer objektu.

Dim currentOrder As New Order()
currentCustomer.Orders.Add(currentOrder)
Order currentOrder = new Order();
currentCustomer.Orders.Add(currentOrder);

Odebrání objektů z kolekce

Odebrání objektů z kolekce voláním Remove nebo RemoveAt metoda třídy vlastní kolekce, nebo z BindingSource.

[!POZNÁMKA]

Remove a RemoveAt jsou automaticky uvedeny metody pro vlastní kolekce při dědit z BindingList.

Následující kód ukazuje, jak vyhledat a odebrat objekty z kolekce zadaný v BindingSource se RemoveAt metoda:

Dim customerIndex As Integer = CustomerBindingSource.Find("CustomerID", "ALFKI")
CustomerBindingSource.RemoveAt(customerIndex)
int customerIndex = customerBindingSource.Find("CustomerID", "ALFKI");
customerBindingSource.RemoveAt(customerIndex);

Zobrazení dat objektu uživatelům

V objektech uživatelům zobrazit data, vytvoříte zdroj dat objektu pomocí Průvodce konfigurací zdroje data přetáhněte do formuláře z celého objektu nebo jednotlivé vlastnosti Zdroje dat okna.

Další informace o vytváření zdroji dat objektu naleznete v Postupy: Připojování k datům v objektech.

Další informace o zobrazení dat z objektů na model Windows Forms viz Vázání ovládacích prvků k datům v sadě Visual Studio.

Změna dat v objektech

Chcete-li upravit data ve vlastních objektů, které je vázán na data model Windows Forms prvky jednoduše upravte ovládací prvky (nebo přímo do vlastností objektu).Architektura vázání dat bude aktualizovat data v objektu.

Pokud aplikace vyžaduje sledování změn a postupné zadní stranu navrhované změny na původní hodnoty, musí implementovat tuto funkci v objektovém modelu.Příklady, jak tabulky dat udržení přehledu o navrhované změny, viz DataRowState, HasChanges, a GetChanges.

Uložení dat v objekty zpět do databáze

Data zpět do databáze uložit předáním hodnoty z vašeho objektu TableAdapter DBDirect metod.

Visual Studio vytvoří DBDirect metod, které mohou být provedeny přímo proti databázi.Tyto metody nevyžadují objektů DataSet nebo DataTable.

Metoda TableAdapter DBDirect

Description

TableAdapter.Insert

Přidá nové záznamy do databáze umožňuje předat jednotlivé sloupce hodnot jako parametrů metody.

TableAdapter.Update

Aktualizace existujících záznamů v databázi.Metody Update trvá původní a nový sloupec hodnot jako parametrů metody.Původní hodnoty slouží k vyhledání původní záznam a nové hodnoty slouží k aktualizaci záznamu.

TableAdapter.Update Také použita metoda bere sloučení změn v objektu dataset zpět do databáze DataSet, DataTable, DataRow, nebo pole DataRows jako parametry metody.

TableAdapter.Delete

Odstraní existující záznamy z databáze založené na původní hodnoty sloupce předána jako parametry metody.

Chcete-li uložit data z kolekce objektů, procházet kolekci objektů (například pomocí smyčky pro další) a odeslat hodnoty pro každý objekt databáze pomocí metody DBDirect TableAdapter.

Následující příklad ukazuje použití TableAdapter.Insert DBDirect metodu pro přidání nového zákazníka přímo do databáze:

Private Sub AddNewCustomer(ByVal currentCustomer As Customer)

    CustomersTableAdapter.Insert(
        currentCustomer.CustomerID,
        currentCustomer.CompanyName,
        currentCustomer.ContactName,
        currentCustomer.ContactTitle,
        currentCustomer.Address,
        currentCustomer.City,
        currentCustomer.Region,
        currentCustomer.PostalCode,
        currentCustomer.Country,
        currentCustomer.Phone,
        currentCustomer.Fax)
End Sub
private void AddNewCustomers(Customer currentCustomer)
{
    customersTableAdapter.Insert( 
        currentCustomer.CustomerID, 
        currentCustomer.CompanyName, 
        currentCustomer.ContactName, 
        currentCustomer.ContactTitle, 
        currentCustomer.Address, 
        currentCustomer.City, 
        currentCustomer.Region, 
        currentCustomer.PostalCode, 
        currentCustomer.Country, 
        currentCustomer.Phone, 
        currentCustomer.Fax);
}

Viz také

Úkoly

Postupy: Připojování k datům v objektech

Návod: Připojování k datům v objektech (Windows Forms)

Postupy: Ukládání dat z objektu do databáze

Postupy: Přímý přístup k databázi pomocí TableAdapter

Návod: Ukládání dat pomocí metod TableAdapter DBDirect

Koncepty

Vázání ovládacích prvků k datům v sadě Visual Studio

Ukládání dat

Další zdroje

TableAdapters