Exemplarische Vorgehensweise: Erstellen einer n-schichtigen Datenanwendung mit ADO.NET und .NET Framework
Hinweis
Datasets und verwandte Klassen sind ältere .NET-Technologien aus den frühen 2000er Jahren, die es Anwendungen ermöglichen, mit Daten im Arbeitsspeicher zu arbeiten, während die Anwendungen von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Anwendungen, die es Benutzern ermöglichen, Daten zu ändern und die Änderungen wieder in der Datenbank zu speichern. Obwohl sich Datasets als sehr erfolgreiche Technologie erwiesen haben, empfehlen wir, dass neue .NET-Anwendungen Entity Framework Core verwenden. Entity Framework bietet eine natürlichere Möglichkeit, mit tabellarischen Daten als Objektmodelle zu arbeiten, und verfügt über eine einfachere Programmierschnittstelle.
N-Tier-Datenanwendungen sind Anwendungen, die auf Daten zugreifen und in mehrere logische Ebenen (oder Tiers) aufgeteilt sind. Die Aufteilung der Anwendungskomponenten in verschiedene Ebenen erhöht die Verwaltbarkeit und die Skalierbarkeit der Anwendung. Auf diese Weise wird das Einarbeiten neuer, eine einzelne Ebene betreffender Technologien vereinfacht, ein erneutes Entwerfen der Anwendung ist nicht notwendig. Zur N-Tier-Architektur gehören eine Präsentationsebene, eine mittlere Ebene und eine Datenebene. Die mittlere Ebene enthält eine Datenzugriffsschicht, eine Geschäftslogikschicht und gemeinsame Komponenten, wie beispielsweise Authentifizierung und Validierung. Die Datenschicht enthält eine relationale Datenbank. N-Tier-Anwendungen speichern vertrauliche Informationen in der Datenzugriffsschicht der mittleren Ebene, um diese von Endbenutzern, die auf die Präsentationsebene zugreifen, getrennt zu halten. Weitere Informationen finden Sie unter Übersicht über n-schichtige Datenanwendungen.
Eine Möglichkeit zum Trennen der verschiedenen Ebenen einer N-Tier-Anwendung besteht im Erstellen separater Projekte für jede Ebene, die in der Anwendung enthalten sein soll. Typisierte DataSets enthalten eine DataSet Project
-Eigenschaft, mit der festgelegt wird, in welche Projekte der erzeugte DataSet-Code und der erzeugte TableAdapter
-Code eingefügt werden.
In dieser exemplarischen Vorgehensweise wird dargestellt, wie DataSet- und TableAdapter
-Code mithilfe des DataSet-Designers in einzelne Klassenbibliotheksprojekte aufgeteilt werden. Nachdem Sie den Dataset- und TableAdapter-Code getrennt haben, erstellen Sie einen Dienst vom Typ Windows Communication Foundation-Dienste und WCF Data Services in Visual Studio, um die Datenzugriffsebene aufzurufen. Abschließend wird eine Windows Forms-Anwendung als Präsentationsebene erstellt. Diese Ebene greift auf Daten des Datendiensts zu.
Im Verlauf dieser exemplarischen Vorgehensweise führen Sie die folgenden Schritte aus:
Erstellen Sie eine neue n-schichtige Projektmappe, die mehrere Projekte enthält.
Hinzufügen von zwei Klassenbibliotheksprojekten zur N-Tier-Projektmappe.
Erstellen eines typisierten DataSets mithilfe des Assistenten zum Konfigurieren von Datenquellen.
Trennen Sie die generierten TableAdapter-Instanzen und den Datasetcode in einzelne Projekte.
Erstellen eines WCF (Windows Communication Foundation)-Diensts für Aufrufe an die Datenzugriffsebene.
Erstellen von Dienstfunktionen, um Daten von der Datenzugriffsebene abzurufen.
Erstellen einer Windows Forms-Anwendung, die als Präsentationsebene dient.
Erstellen von Windows Forms-Steuerelementen, die an die Datenquelle gebunden werden.
Schreiben von Code zum Füllen der Datentabellen.
Voraussetzungen
Für dieses Tutorial müssen die Workloads .NET-Desktopentwicklung und Datenspeicherung und -verarbeitung in Visual Studio installiert sein. Um diese zu installieren, öffnen Sie Visual Studio-Installer und wählen Ändern (oder Weitere>Ändern) neben der Version von Visual Studio aus, die Sie ändern möchten. Weitere Informationen finden Sie im Artikel Ändern von Visual Studio durch Hinzufügen oder Entfernen von Arbeitsauslastungen und Komponenten.
In dieser exemplarischen Vorgehensweise werden SQL Server Express LocalDB und die Northwind-Beispieldatenbank verwendet.
Wenn Sie nicht über SQL Server Express LocalDB verfügen, installieren Sie diese Komponente entweder über die SQL Server Express-Downloadseite oder über den Visual Studio-Installer. Im Visual Studio-Installer können Sie SQL Server Express LocalDB als Teil der Workload .NET-Desktopentwicklung oder als einzelne Komponente installieren.
Installieren Sie die Northwind-Beispieldatenbank, indem Sie die folgenden Schritte ausführen:
Öffnen Sie in Visual Studio das Fenster SQL Server-Objekt-Explorer. (Der SQL Server-Objekt-Explorer wird als Teil der Workload für die Datenspeicherung und -verarbeitung im Visual Studio-Installer installiert.) Erweitern Sie den Knoten SQL Server. Klicken Sie mit der rechten Maustaste auf Ihre LocalDB-Instanz, und wählen Sie Neue Abfrage aus.
Ein Abfrage-Editor-Fenster wird geöffnet.
Kopieren Sie das Northwind-Transact-SQL-Skript in die Zwischenablage. Dieses T-SQL-Skript erstellt die Northwind-Datenbank von Grund auf neu und füllt sie mit Daten auf.
Fügen Sie das T-SQL-Skript in den Abfrage-Editor ein, und klicken Sie dann auf die Schaltfläche Ausführen.
Nach kurzer Zeit wird die Ausführung der Abfrage abgeschlossen, und die Northwind-Datenbank wird erstellt.
Öffnen Sie in Visual Studio das Fenster SQL Server-Objekt-Explorer. (Der SQL Server-Objekt-Explorer wird als Teil der Workload für die Datenspeicherung und -verarbeitung im Visual Studio-Installer installiert.) Erweitern Sie den Knoten SQL Server. Klicken Sie mit der rechten Maustaste auf Ihre LocalDB-Instanz, und wählen Sie Neue Abfrage aus.
Wenn die LocalDB-Instanz nicht angezeigt wird, verwenden Sie die Symbolleistenschaltfläche SQL Server hinzufügen. Das Dialogfeld wird angezeigt. Erweitern Sie im Dialogfeld Lokal, und wählen Sie MSSQLLocalDB aus. Geben Sie die entsprechenden Anmeldeinformationen ein. Sie können die Standardauswahl für die Datenbank belassen.
Wählen Sie Verbinden aus. Ein Knoten wird für LocalDB im SQL Server-Objekt-Explorerhinzugefügt.
Klicken Sie mit der rechten Maustaste auf Ihre LocalDB-Instanz, und wählen Sie Neue Abfrage aus.
Ein Abfrage-Editor-Fenster wird geöffnet.
Kopieren Sie das Northwind-Transact-SQL-Skript in die Zwischenablage. Dieses T-SQL-Skript erstellt die Northwind-Datenbank von Grund auf neu und füllt sie mit Daten auf.
Fügen Sie das T-SQL-Skript in den Abfrage-Editor ein, und klicken Sie dann auf die Schaltfläche Ausführen.
Nach kurzer Zeit wird die Ausführung der Abfrage abgeschlossen, und die Northwind-Datenbank wird erstellt.
Erstellen der n-schichtigen Projektmappe und Klassenbibliothek für das Dataset (DataEntityTier)
Im ersten Schritt dieser exemplarischen Vorgehensweise werden eine Projektmappe und zwei Klassenbibliotheksprojekte erstellt. Die erste Klassenbibliothek enthält das Dataset (die generierte typisierte DataSet
-Klasse und Datentabellen, die die Daten der Anwendung enthalten). Dieses Projekt wird als Datenentitätsschicht der Anwendung verwendet und befindet sich normalerweise in der mittleren Ebene. Das Dataset erstellt das anfängliche Dataset und trennt den Code automatisch in die beiden Klassenbibliotheken.
Hinweis
Stellen Sie sicher, dass Projekt und Projektmappe ordnungsgemäß benannt wurden, bevor Sie auf OK klicken. Das erleichtert die Durchführung der exemplarischen Vorgehensweise.
So erstellen Sie die N-Tier-Projektmappe und die DataEntityTier-Klassenbibliothek
Erstellen Sie in Visual Studio ein Projekt mit der Windows Forms-App (.NET Framework)-Projektvorlage für C# oder Visual Basic. .NET Core, .NET 5 und höher werden nicht unterstützt.
Nennen Sie das Projekt DataEntityTier.
Benennen Sie die Projektmappe mit NTierWalkthrough, und wählen Sie dann OK aus.
Eine Projektmappe NTierWalkthrough mit dem Projekt DataEntityTier wird erstellt und zum Projektmappen-Explorer hinzugefügt.
Erstellen der Klassenbibliothek für die TableAdapter-Instanzen (DataAccessTier)
Nach dem Erstellen des Projekts DataEntityTier besteht der nächste Schritt darin, ein zweites Klassenbibliotheksprojekt zu erstellen. Dieses Projekt enthält die generierten TableAdapter-Instanzen und wird als Datenzugriffsebene der Anwendung bezeichnet. Die Datenzugriffsebene enthält die zum Herstellen einer Verbindung mit der Datenbank notwendigen Informationen und befindet sich normalerweise in der mittleren Ebene.
So erstellen Sie eine separate Klassenbibliothek für die TableAdapter-Instanzen
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und wählen Sie anschließend Hinzufügen>Neues Projekt aus.
Wählen Sie die Projektvorlage Klassenbibliothek (.NET Framework) aus.
Benennen Sie das Projekt mit DataAccessTier, und wählen Sie OK aus.
Das Projekt DataAccessTier wird erstellt und zur Projektmappe NTierWalkthrough hinzugefügt.
Erstellen des Datasets
Der nächste Schritt besteht darin, ein typisiertes DataSet zu erstellen. Typisierte Datasets werden mit beiden Datasetklassen (einschließlich der DataTables
-Klassen) und der TableAdapter
-Klassen in einem einzelnen Projekt erstellt. (Alle Klassen werden in einer einzelnen Datei generiert.) Wenn Sie das Dataset und die TableAdapter-Instanzen in verschiedene Projekte aufteilen, ist es die Datasetklasse, die in das andere Projekt verschoben wird, wobei die TableAdapter
-Klassen im ursprünglichen Projekt verbleiben. Erstellen Sie daher das Dataset in dem Projekt, das letztendlich die TableAdapter-Instanzen (das Projekt „DataAccessTier“) enthalten wird. Sie erstellen das Dataset mithilfe des Assistenten zum Konfigurieren von Datenquellen.
Hinweis
Sie benötigen Zugriff auf die Beispieldatenbank Northwind, um die Verbindung herstellen zu können. Informationen zum Einrichten der Northwind-Beispieldatenbank finden Sie unter Gewusst wie: Installieren von Beispieldatenbanken.
So erstellen Sie das Dataset
Wählen Sie DataAccessTier im Projektmappen-Explorer aus.
Klicken Sie im Menü Daten auf Datenquellen anzeigen.
Das Fenster Datenquellen wird geöffnet.
Wählen Sie im Datenquellenfenster die Option Neue Datenquelle hinzufügen aus, um den Assistenten zum Konfigurieren von Datenquellen zu starten.
Wählen Sie auf der Seite Datenquellentyp auswählen die Option Datenbank aus, und klicken Sie dann auf Weiter.
Führen Sie auf der Seite Wählen Sie Ihre Datenverbindung eine der folgenden Aktionen aus:
Wenn in der Dropdownliste eine Datenverbindung zur Beispieldatenbank „Northwind“ verfügbar ist, wählen Sie diese aus.
or
Wählen Sie Neue Verbindung aus, um das Dialogfeld Verbindung hinzufügen zu öffnen.
Sollte für die Datenbank ein Kennwort erforderlich sein, wählen Sie die Option für die Einbeziehung vertraulicher Daten aus, und klicken Sie anschließend auf Weiter.
Hinweis
Wenn Sie eine lokale Datenbankdatei ausgewählt haben (statt eine Verbindung mit SQL Server herzustellen), werden Sie möglicherweise gefragt, ob Sie die Datei zum Projekt hinzufügen möchten. Wählen Sie Ja aus, um die Datenbankdatei zum Projekt hinzuzufügen.
Wählen Sie auf der Seite Verbindungszeichenfolge in der Programmkonfigurationsdatei speichern die Option Weiter aus.
Erweitern Sie auf der Seite Datenbankobjekte auswählen den Knoten Tabellen .
Aktivieren Sie die Kontrollkästchen für die Tabellen Customers und Orders, und wählen Sie dann Fertig stellen aus.
Das NorthwindDataSet wird zum DataAccessTier-Projekt hinzugefügt und im Fenster Datenquellen angezeigt.
So trennen Sie die TableAdapter-Instanzen vom Dataset
Nach dem Erstellen des DataSets wird die generierte DataSet-Klasse von den TableAdaptern getrennt. Hierzu müssen Sie die DataSet-Projekt-Eigenschaft auf den Namen des Projekts festlegen, in dem die aufgeteilten DataSet-Klassen gespeichert werden sollen.
So trennen Sie die TableAdapter vom DataSet
Doppelklicken Sie im Projektmappen-Explorer auf NorthwindDataSet.xsd, um das DataSet im DataSet-Designer zu öffnen.
Wählen Sie im Designer einen leeren Bereich aus.
Suchen Sie den Knoten DataSet-Projekt im Fenster Eigenschaften.
Wählen Sie in der Liste DataSet-ProjektDataEntityTier aus.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
DataSet und TableAdapter werden in die zwei Klassenbibliotheksprojekte aufgeteilt. Das Projekt, in dem ursprünglich das gesamte Dataset (
DataAccessTier
) enthalten war, enthält jetzt nur noch die TableAdapter-Instanzen. Das in der DataSet-Projekt-Eigenschaft angegebene Projekt (DataEntityTier
) enthält das typisierte Dataset: NorthwindDataSet.Dataset.Designer.vb (oder NorthwindDataSet.Dataset.Designer.cs).
Hinweis
Bei einer Aufteilung von DataSets und TableAdapters (durch Festlegen der DataSet-Projekt-Eigenschaft) werden vorhandene partielle DataSet-Klassen in dem Projekt nicht automatisch verschoben. Vorhandene partielle DataSet-Klassen müssen manuell in das DataSet-Projekt verschoben werden.
Erstellen einer neuen Dienstanwendung
Diese exemplarische Vorgehensweise zeigt, wie Sie mithilfe eines WCF-Diensts auf die Datenzugriffsebene zugreifen. Erstellen wir also eine neue WCF-Dienstanwendung.
So erstellen Sie eine neue WCF-Dienstanwendung
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und wählen Sie anschließend Hinzufügen>Neues Projekt aus.
Klicken Sie im linken Bereich des Dialogfelds Neues Projekt auf WCF. Wählen Sie im mittleren Bereich WCF-Dienstbibliothek aus.
Benennen Sie das Projekt mit DataService, und wählen Sie OK aus.
Das Projekt DataService wird erstellt und zur Projektmappe NTierWalkthrough hinzugefügt.
Erstellen von Methoden in der Datenzugriffsebene zur Rückgabe der Customers- und Orders-Daten
Der Datendienst muss zwei Methoden in der Datenzugriffsebene aufrufen: GetCustomers
und GetOrders
. Diese Methoden geben die Northwind-Tabellen Customers
und Orders
zurück. Erstellen Sie die Methoden GetCustomers
und GetOrders
im DataAccessTier
-Projekt.
So erstellen Sie eine Methode in der Datenzugriffsebene, die die Tabelle Customers zurückgibt
Doppelklicken Sie im Projektmappen-Explorer auf NorthwindDataset.xsd, um das Dataset zu öffnen.
Klicken Sie mit der rechten Maustaste auf CustomersTableAdapter, und klicken Sie dann auf Abfrage hinzufügen.
Übernehmen Sie auf der Seite Wählen Sie einen Befehlstyp aus den Standardwert SQL-Anweisungen verwenden, und klicken Sie auf Weiter.
Übernehmen Sie auf der Seite Abfragetyp auswählen den Standardwert SELECT-Anweisung, die Zeilen zurückgibt, und klicken Sie auf Weiter.
Übernehmen Sie auf der Seite SQL-SELECT-Anweisung angeben die Standardabfrage, und klicken Sie auf Weiter.
Geben Sie auf der Seite Zu generierende Methode auswählen für den Methodennamen im Abschnitt DataTable zurückgeben die Zeichenfolge GetCustomers ein.
Klicken Sie auf Fertig stellen.
So erstellen Sie eine Methode in der Datenzugriffsebene, die die Tabelle Orders zurückgibt
Klicken Sie mit der rechten Maustaste auf OrdersTableAdapter, und klicken Sie auf Abfrage hinzufügen.
Übernehmen Sie auf der Seite Wählen Sie einen Befehlstyp aus den Standardwert SQL-Anweisungen verwenden, und klicken Sie auf Weiter.
Übernehmen Sie auf der Seite Abfragetyp auswählen den Standardwert SELECT-Anweisung, die Zeilen zurückgibt, und klicken Sie auf Weiter.
Übernehmen Sie auf der Seite SQL-SELECT-Anweisung angeben die Standardabfrage, und klicken Sie auf Weiter.
Geben Sie auf der Seite Zu generierende Methoden auswählen für den Methodennamen im Abschnitt DataTable zurückgeben die Zeichenfolge GetOrders ein.
Klicken Sie auf Fertig stellen.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Hinzufügen eines Verweises auf die Datenentitätsebene und die Datenzugriffsebene zum Datendienst
Da der Datendienst Informationen von DataSet und TableAdapters erfordert, müssen Verweise auf das Projekt DataEntityTier und das Projekt DataAccessTier hinzugefügt werden.
So fügen Sie Verweise zum Datendienst hinzu
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf DataService, und klicken Sie anschließend auf Verweis hinzufügen.
Klicken Sie im Dialogfeld Verweis hinzufügen auf die Registerkarte Projekte.
Wählen Sie sowohl das Projekt DataAccessTier als auch das Projekt DataEntityTier aus.
Klicken Sie auf OK.
Hinzufügen von Funktionen zum Dienst zum Aufrufen der Methoden „GetCustomers“ und „GetOrders“ in der Datenzugriffsebene
Nachdem die Datenzugriffsebene die Methoden zur Rückgabe der Daten enthält, müssen Sie im Datendienst Methoden erstellen, um die Methoden in der Datenzugriffsebene aufzurufen.
Hinweis
In C#-Projekten muss ein Verweis auf die System.Data.DataSetExtensions
-Assembly für die Kompilierung des nachfolgenden Codes hinzugefügt werden.
So erstellen Sie im Datendienst die GetCustomers-Funktion und die GetOrders-Funktion
Doppelklicken Sie im Projekt DataService auf IService1.vb oder IService1.cs.
Fügen Sie unter dem Kommentar Hier Dienstvorgänge hinzufügen folgenden Code hinzu:
[OperationContract] DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers(); [OperationContract] DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders();
Hinweis
Der Code für dieses Tutorial ist in C# und Visual Basic verfügbar. Um die Codesprache auf dieser Seite zwischen C# und Visual Basic zu wechseln, verwenden Sie den Codesprachenumschalter oben rechts auf der Seite.
Doppelklicken Sie im Projekt DataService auf IService1.vb (oder IService1.cs).
Fügen Sie der Service1-Klasse den folgenden Code hinzu:
public DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers() { DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter CustomersTableAdapter1 = new DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter(); return CustomersTableAdapter1.GetCustomers(); } public DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders() { DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter OrdersTableAdapter1 = new DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter(); return OrdersTableAdapter1.GetOrders(); }
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Erstellen einer Präsentationsebene zum Anzeigen von Daten des Datendiensts
Nachdem die Projektmappe den Datendienst enthält, der über Methoden zum Aufrufen der Datenzugriffsebene verfügt, muss ein weiteres Projekt erstellt werden, das den Datendienst aufruft und den Benutzern die Daten anzeigt. Erstellen Sie für diese exemplarische Vorgehensweise eine Windows Forms-Anwendung als Präsentationsebene der N-Tier-Anwendung.
So erstellen Sie das Präsentationsebenenprojekt
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und wählen Sie anschließend Hinzufügen>Neues Projekt aus.
Klicken Sie im linken Bereich des Dialogfelds Neues Projekt auf Windows Desktop. Wählen Sie im mittleren Bereich Windows Forms-App aus.
Nennen Sie das Projekt PresentationTier, und klicken Sie auf OK.
Das Projekt PresentationTier wird erstellt und zur Projektmappe NTierWalkthrough hinzugefügt.
Festlegen des PresentationTier-Projekts als Startprojekt
Wir legen das PresentationTier-Projekt als Startprojekt für die Projektmappe fest, da es sich um die eigentliche Clientanwendung handelt, die die Daten darstellt und mit ihnen interagiert.
So legen Sie das neue Präsentationsebenenprojekt als Startprojekt fest
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf PresentationTier, und klicken Sie anschließend auf Als Startprojekt festlegen.
Hinzufügen von Verweisen auf die Präsentationsebene
Die PresentationTier der Clientanwendung erfordert einen Dienstverweis auf den Datendienst, um auf die Methoden des Diensts zugreifen zu können. Außerdem ist ein Verweis auf das DataSet erforderlich, um die Typfreigabe des WCF-Diensts zu aktivieren. Bis zur Aktivierung der Typfreigabe durch den Datendienst ist zu partiellen Datasetklassen hinzugefügter Code nicht auf der Präsentationsebene verfügbar. Da in der Regel Code, z. B. Validierungscode, zu den Spalten- und Zeilenänderungsereignissen der Datentabelle hinzugefügt wird, erfolgt der Zugriff auf diesen Code wahrscheinlich vom Client aus.
So fügen Sie einen Verweis auf die Präsentationsebene hinzu
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf PresentationTier, und wählen Sie anschließend Verweis hinzufügen aus.
Wählen Sie im Dialogfeld Verweis hinzufügen die Registerkarte Projekte aus.
Wählen Sie DataEntityTier und dann OK aus.
So fügen Sie einen Dienstverweis auf die Präsentationsebene hinzu
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf PresentationTier, und wählen Sie Dienstverweis hinzufügen aus.
Wählen Sie im Dialogfeld Dienstverweis hinzufügen die Option Ermitteln aus.
Wählen Sie Dienst1 und dann OK aus.
Hinweis
Wenn der aktuelle Computer über mehrere Dienste verfügt, wählen Sie den zuvor in dieser exemplarischen Vorgehensweise erstellten Dienst aus (der Dienst, der die Methoden
GetCustomers
undGetOrders
enthält).
Hinzufügen von DataGridViews zum Formular zur Anzeige der vom Datendienst zurückgegebenen Daten
Nachdem der Dienstverweis zum Datendienst hinzugefügt wurde, werden die vom Dienst zurückgegebenen Daten automatisch zum Fenster Datenquellen hinzugefügt.
So fügen Sie zwei datengebundene DataGridViews zum Formular hinzu
Wählen Sie im Projektmappen-Explorer das Projekt PresentationTier aus.
Erweitern Sie im Fenster Datenquellen das NorthwindDataSet, und suchen Sie den Knoten Customers.
Ziehen Sie den Knoten Customers auf Form1.
Erweitern Sie im Fenster Datenquellen den Knoten Customers, und suchen Sie den zugehörigen Knoten Orders (den im Knoten Customers geschachtelten Knoten Orders).
Ziehen Sie den zugehörigen Knoten Orders auf Form1.
Erstellen Sie einen
Form1_Load
-Ereignishandler, indem Sie auf einen leeren Bereich des Formulars doppelklicken.Fügen Sie dem
Form1_Load
-Ereignishandler den folgenden Code hinzu.
Erhöhen der vom Dienst zugelassenen maximalen Nachrichtengröße
Der Standardwert für maxReceivedMessageSize
ist nicht groß genug, um die aus den Tabellen Customers
und Orders
abgerufenen Daten aufzunehmen. In den folgenden Schritten erhöhen Sie den Wert auf 6553600. Sie ändern den Wert auf dem Client, wodurch automatisch der Dienstverweis aktualisiert wird.
Hinweis
Die niedrigere Standardgröße dient dazu, die Anfälligkeit für Denial-of-Service (DoS)-Angriffe zu verringern. Weitere Informationen finden Sie unter MaxReceivedMessageSize.
So erhöhen Sie den maxReceivedMessageSize-Wert
Doppelklicken Sie im Projektmappen-Explorer im Projekt PresentationTier auf die Datei app.config.
Suchen Sie das maxReceivedMessageSize-Attribut, und ändern Sie den Wert in
6553600
. Wenn der EintragbasicHttpBinding
nicht angezeigt wird, fügen Sie einen wie im folgenden Beispiel hinzu:<system.serviceModel> <bindings> <basicHttpBinding> <binding maxBufferSize="6553600" maxReceivedMessageSize="6553600" /> </basicHttpBinding> </bindings> </system.serviceModel>
Testen der Anwendung
Drücken Sie F5, um die Anwendung auszuführen. Die Daten aus den Tabellen Customers
und Orders
werden vom Datendienst abgerufen und im Formular angezeigt.
Nächste Schritte
Abhängig von den Anforderungen Ihrer Anwendung könnten nach dem Speichern der verknüpften Daten in der Windows-Anwendung weitere Schritte sinnvoll sein. Beispielsweise können Sie der Anwendung folgende Erweiterungen hinzufügen:
Hinzufügen der Validierung zum DataSet.
Hinzufügen von zusätzlichen Methoden zum Dienst für das Aktualisieren der Daten in der Datenbank.