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