Udostępnij za pośrednictwem


Powiązanie obiektów w Visual Studio

Visual Studio zawiera narzędzia służące do projektowania do pracy z niestandardowych obiektów (w przeciwieństwie do innych źródeł danych, takich jak podmioty, zestawów danych i usług) jako źródła danych w aplikacji.

Wymagania obiektu

Jedynym wymaganiem dla niestandardowych obiektów do pracy z danymi narzędzi projektowania w programie Visual Studio jest, że obiekt wymaga co najmniej jedna właściwość publicznych.

Ogólnie niestandardowe obiekty nie wymagają żadnych szczególnych interfejsów konstruktory lub atrybuty, które mają działać jako źródło danych dla aplikacji.Jednakże jeśli chcesz przeciągnąć obiekt z Źródła danych okno do powierzchni projektu, aby utworzyć formant powiązany z danymi oraz jeśli obiekt implementuje ITypedList lub IListSource interfejsu, obiekt musi mieć domyślnego konstruktora (to znaczy konstruktora bez parametrów).W przeciwnym razie Visual Studio nie można utworzyć wystąpienia obiektu źródła danych i zostanie zwrócony komunikat o błędzie podczas przeciągania elementu do powierzchni projektu.

Przykłady użycia obiektów niestandardowych jako źródła danych

Podczas niezliczone sposoby zaimplementowania logiki aplikacji, podczas pracy z obiektami jako źródło danych jest kilka standardowych operacji, które mogą zostać uproszczone przy użyciu Visual Studio–generated TableAdapter obiektów.Ta strona opisuje sposób nadawania tych standardowych procesów przy użyciu TableAdapters; nie ma służyć jako przewodnik w do tworzenia niestandardowych obiektów.Na przykład będzie zazwyczaj wykonać następujące operacje standardowe niezależnie od określonej implementacji obiektów lub logiki aplikacji:

  • Ładowanie danych do obiektów (zazwyczaj z bazy danych).

  • Tworzenie maszynowy kolekcja obiektów.

  • Dodawanie nowych obiektów i usuwanie obiektów z kolekcji.

  • Wyświetlanie danych obiektu do użytkowników w formularzu.

  • Zmiana/edycji danych w obiekcie.

  • Zapisywanie danych z obiektów, wróć do bazy danych.

[!UWAGA]

W celu lepszego zrozumienia i przewidują kontekście przykłady na tej stronie, Sugerujemy, aby wykonać następujące czynności: Wskazówki: łączenie z danymi w obiektach (formularze systemu Windows).Instruktaż ten tworzy obiekty, omawiane na tej stronie pomocy.

Ładowanie danych do obiektów

W tym przykładzie ładowania danych do obiektów przy użyciu TableAdapters.Domyślnie TableAdapters są tworzone za pomocą dwóch rodzajów metod, które pobiera dane z bazy danych i Wypełnij tabele danych.

  • TableAdapter.Fill Metoda wypełnia istniejącej tabeli danych zwracane dane.

  • TableAdapter.GetData Metoda zwraca nowej tabeli danych wypełniane danymi.

Najprostszy sposób załadować niestandardowych obiektów z danymi jest wywołanie TableAdapter.GetData metody pętli kolekcji wierszy w tabeli zwrócone dane i wypełniać każdego obiektu z wartości w każdym wierszu.Można utworzyć GetData metodę, która zwraca tabelę danych zaludnionych dla dowolnej kwerendy dodaje się TableAdapter.

[!UWAGA]

Visual Studio nazwy kwerendy TableAdapter Fill i GetData domyślnie, ale nazwy te można zmienić na dowolną nazwę prawidłowej metody.

Poniższy przykład przedstawia sposób pętli wierszy w tabeli danych i wypełnienie obiektu z danymi:

Aby uzyskać pełny przykład kodu, zobacz Wskazówki: łączenie z danymi w obiektach (formularze systemu Windows).

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

Tworzenie maszynowy kolekcji obiektów

Można utworzyć klasy kolekcji dla obiektów lub używać maszynowy kolekcje, które są automatycznie udostępniane przez BindingSource — Składnik.

Podczas tworzenia kolekcji niestandardowej klasy obiektów Sugerujemy, że dziedziczą się z BindingList.Ta klasa rodzajowy zapewnia funkcje administrowania Twojej kolekcji, jak również zdolność do pozyskania zdarzeń, które są wysyłane powiadomienia do infrastruktury wiązania z danymi w Windows Forms.

Kolekcja generowane automatycznie w BindingSource używa BindingList dla swojej kolekcji maszynowy.Jeśli aplikacja nie wymaga dodatkowych funkcji, a następnie można zachować Twojej kolekcji, w ramach BindingSource.Aby uzyskać więcej informacji, zobacz List właściwość BindingSource klasy.

[!UWAGA]

Jeśli kolekcja będzie wymagać funkcje nie są udostępniane przez podstawowy wykonania BindingList, a następnie należy utworzyć kolekcję niestandardową, dzięki czemu w razie potrzeby można dodać klasy.

Poniższy kod ilustruje sposób tworzenia klasy jednoznacznie określone typy kolekcji Order obiektów:

''' <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.
}

Dodawanie obiektów do kolekcji

Dodawanie obiektów do kolekcji, wywołując Add metody klasy kolekcji niestandardowej lub z BindingSource.

Na przykład dodawanie do kolekcji za pomocą BindingSource, zobacz LoadCustomers metodę w Wskazówki: łączenie z danymi w obiektach (formularze systemu Windows).

Na przykład dodawanie obiektów do kolekcji niestandardowych, zobacz LoadOrders metodę w Wskazówki: łączenie z danymi w obiektach (formularze systemu Windows).

[!UWAGA]

Add Metoda jest dostarczany automatycznie dla kolekcji niestandardowych, gdy dziedziczą z BindingList.

Poniższy kod przedstawia sposób dodawania obiektów do kolekcji wpisywanych w BindingSource:

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

Poniższy kod przedstawia sposób dodawania obiektów do wpisywanych kolekcji, która dziedziczy z BindingList:

[!UWAGA]

W tym przykładzie Orders kolekcji jest właściwością Customer obiektu.

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

Usuwanie obiektów z kolekcji

Usuwanie obiektów z kolekcji, wywołując Remove lub RemoveAt metody klasy kolekcji niestandardowej lub z BindingSource.

[!UWAGA]

Remove i RemoveAt metody są automatycznie przewidzianego na Twojej kolekcji niestandardowych dziedziczą z BindingList.

Poniższy kod przedstawia sposób wyszukać i usunąć obiekty z kolekcji wpisywanych w BindingSource z RemoveAt metody:

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

Wyświetlanie danych w obiekcie do użytkowników

Aby wyświetlić dane w obiektach użytkowników, tworzenie na obiekt danych źródłowych używa Kreator konfiguracji źródła danych, a następnie przeciągnij cały obiekt lub pojedynczych właściwości formularza z Źródła danych okna.

Aby uzyskać więcej informacji na temat tworzenia źródła danych dla obiektu, zobacz Porady: łączenie z danymi w obiektach.

Aby uzyskać więcej informacji na temat wyświetlania danych z obiektów na Windows Forms, zobacz Powiązywanie kontrolek z danymi w Visual Studio.

Modyfikowanie danych w obiektach

Do edycji danych w niestandardowych obiektów, które są powiązany z danymi Windows Forms kontroli, po prostu edytować danych w formantem (lub bezpośrednio we właściwościach obiektu).Architektura wiązania z danymi będzie aktualizować dane w obiekcie.

Jeśli aplikacja wymaga śledzenia zmian i toczenia z tyłu proponowanych zmian do ich oryginalne wartości, należy zaimplementować tę funkcję w modelu obiektów.Przykłady jak tabele danych śledzenie pracy proponowane, zobacz DataRowState, HasChanges, i GetChanges.

Zapisywanie danych w obiektach, wróć do bazy danych

Zapisywania danych do bazy danych przez przekazanie wartości z obiektu do metody DBDirect TableAdapter.

Visual Studio tworzy metody DBDirect, które mogą być wykonywane bezpośrednio w bazie danych.Metody te nie wymagają obiektów DataSet lub DataTable.

Metoda TableAdapter DBDirect

Opis

TableAdapter.Insert

Dodaje nowe rekordy do bazy danych pozwala przekazywać w wartości poszczególnych kolumn jako parametry metody.

TableAdapter.Update

Aktualizacje istniejących rekordów w bazie danych.Metoda aktualizacji przyjmuje wartości oryginalne i nowe kolumny jako parametry metody.Oryginalne wartości są używane do lokalizowania oryginalnego rekordu, a nowe wartości są używane do aktualizacji rekordu.

TableAdapter.Update Metoda również jest używany w celu uzgodnienia zmian w zestawie danych z bazą, biorąc pod DataSet, DataTable, DataRow, lub w tablicy DataRows jako parametry metody.

TableAdapter.Delete

Usuwa istniejące rekordy z bazy danych na podstawie oryginalnej wartości kolumny przekazany jako parametry metody.

Aby zapisać dane ze zbioru obiektów, pętli kolekcji obiektów (na przykład za pomocą pętli dla następnego) i wysłać wartości dla każdego obiektu bazy danych przy użyciu metody DBDirect TableAdapter.

Poniższy przykład pokazuje, jak używać TableAdapter.Insert DBDirect metody, aby dodać nowego klienta bezpośrednio do bazy danych:

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

Zobacz też

Zadania

Porady: łączenie z danymi w obiektach

Wskazówki: łączenie z danymi w obiektach (formularze systemu Windows)

Porady: zapisywanie z obiektu do bazy danych

Porady: bezpośredni dostęp do bazy danych za pomocą TableAdapter

Wskazówki: zapisywanie danych za pomocą metod TableAdapter DBDirect

Koncepcje

Powiązywanie kontrolek z danymi w Visual Studio

Zapisywanie danych

Inne zasoby

TableAdapters