Empfehlungen zur Zugriffsstrategie auf Daten

Aktualisiert: November 2007

ADO.NET geht für den Datenzugriff von einem Modell aus, in dem Sie eine Verbindung öffnen, Daten abrufen oder einen Vorgang ausführen und anschließend die Verbindung schließen. ADO.NET bietet zwei Basisstrategien für die Arbeit mit diesem Modell. Ein Modell basiert darauf, dass Daten in einem Dataset gespeichert werden. Ein Dataset ist ein Datensatzcache im Speicher, mit dem Sie arbeiten können, während Sie von der Datenquelle getrennt sind. Wenn Sie ein Dataset verwenden möchten, erstellen Sie eine Instanz davon, die Sie mithilfe eines Datenadapters von der Datenquelle füllen. Anschließend arbeiten Sie mit den Daten im Dataset, indem Sie z. B. Steuerelemente an Datasetmember binden. Weitere Informationen finden Sie unter Übersicht über Datasets in Visual Studio.

Eine alternative Strategie besteht darin, Operationen direkt mit der Datenbank auszuführen. In diesem Modell verwenden Sie eine TableAdapter-Abfrage oder einen Datenbefehl mit einer SQL-Anweisung oder einem Verweis auf eine gespeicherte Prozedur. Anschließend können Sie die Abfrage oder den Befehl verwenden, um die Operation auszuführen. Weitere Informationen finden Sie unter Abrufen von Daten für die Anwendung.

Speichern von Daten in Datasets

Ein gebräuchliches Datenzugriffsmodell in Visual Studio-Anwendungen besteht darin, Daten in Datasets zu speichern und zum Lesen und Schreiben der Daten in der Datenbank TableAdapters oder Datenadapter zu verwenden. Das Dataset-Modell bietet folgende Vorteile:

  • Arbeiten mit mehreren Tabellen   Ein Dataset kann mehrere Ergebnistabellen enthalten, die es als diskrete Objekte verwaltet. Sie können einzeln mit den Tabellen arbeiten oder sie als übergeordnete und untergeordnete Tabellen verwenden, um darin zu navigieren.

  • Bearbeiten von Daten aus mehreren Quellen   Die Tabellen in einem Dataset können Daten aus vielen verschiedenen Quellen repräsentieren (z. B. aus verschiedenen Datenbanken, aus XML-Dateien, Arbeitsblättern usw., alle im selben Dataset). Sind die Daten erst im Dataset, können Sie sie bearbeiten und in einem einheitlichen Format miteinander verknüpfen, als kämen sie alle aus derselben Quelle.

  • Verschieben von Daten zwischen verschiedenen Ebenen in einer verteilten Anwendung   Weil die Daten in einem Dataset gespeichert sind, können sie problemlos zwischen der Präsentationsebene, der Geschäftsebene und der Datenebene der Anwendungen verschoben werden.

  • Datenaustausch mit anderen Anwendungen   Über einen Dataset können Daten effektiv mit anderen Komponenten Ihrer Anwendung und mit anderen Anwendungen ausgetauscht werden. Datasets bieten umfassende Unterstützung von Funktionen wie der Serialisierung von Daten als XML und dem Lesen und Schreiben von XML-Schemas.

  • Datenbindung   Beim Arbeiten mit Formularen ist es normalerweise einfacher, Steuerelemente in einem Dataset mit Daten zu verbinden, als nach dem Ausführen eines Befehls Datenwerte über das Programm ins Steuerelement zu laden.

  • **Verwalten von Datensätzen für die Wiederverwendung   **Mit einem Dataset können Sie wiederholt mit denselben Datensätzen arbeiten, ohne eine erneute Abfrage in der Datenbank auszuführen. Mit den Datasetfunktionen können Sie Datensätze filtern und sortieren sowie das Dataset als Datenquelle beim Paging verwenden.

  • Leichteres Programmieren   Wenn Sie mit einem Dataset arbeiten, können Sie eine Klassendatei generieren, die seine Struktur als Objekte darstellt (z. B. kann auf die Tabelle Customers im Dataset als dataset.Customers-Objekt zugegriffen werden). Dadurch ist das Programmieren mit Datensätzen einfacher, klarer und weniger fehleranfällig. Diese Zugriffsmethode wird von Visual Studio-Tools wie IntelliSense, dem Datenadapter-Konfigurations-Assistenten usw. unterstützt.

Direktes Durchführen von Datenbankoperationen

Sie können auch direkt mit der Datenbank arbeiten. In diesem Modell verwenden Sie ein Datenbefehlsobjekt mit einer SQL-Anweisung oder einem Verweis auf eine gespeicherte Prozedur. Anschließend können Sie den Befehl verwenden, um die Operation auszuführen. Weitere Informationen finden Sie unter Befehle und Parameter (ADO.NET).

Sicherheitshinweis:

Wenn Sie Datenbefehle mit einer CommandType-Eigenschaft mit dem Wert Text verwenden, müssen Sie die von einem Client gesendeten Informationen sorgfältig überprüfen, bevor Sie diese an die Datenbank übergeben. Böswillige Benutzer könnten versuchen, veränderte oder zusätzliche SQL-Anweisungen zu senden (einzufügen), um unautorisierten Zugriff zu erhalten oder die Datenbank zu beschädigen. Bevor Sie Benutzereingaben an eine Datenbank übergeben, müssen Sie immer die Zulässigkeit der Informationen überprüfen. Es wird empfohlen, möglichst immer parametrisierte Abfragen oder gespeicherte Prozeduren zu verwenden.

Das direkte Ausführen von Datenbankoperationen hat u. a. folgende Vorteile:

  • Zusätzliche Funktionalität   Wie bereits erwähnt, ist die Ausführung bestimmter Operationen, z. B. die Ausführung von DLL-Befehlen, nur mit Datenbefehlen möglich.

  • Bessere Kontrolle über die Ausführung   Durch die Verwendung von Befehlen (und eines Datenreaders, falls Sie Daten lesen) haben Sie eine umfassendere direkte Kontrolle darüber, wie und wann eine SQL-Anweisung oder eine gespeicherte Prozedur ausgeführt wird und was mit den Ergebnissen oder Rückgabewerten geschieht.

  • Weniger Verwaltungsaufwand   Durch direktes Lesen und Schreiben in die Datenbank können Sie die Speicherung von Daten in einem Dataset umgehen. Da das Dataset Speicherplatz belegt, können Sie auf diese Weise den Verwaltungsaufwand in Ihrer Anwendung reduzieren. Das gilt besonders dann, wenn die Daten nur einmal gebraucht werden, z. B. beim Anzeigen von Suchergebnissen auf einer Webseite. In diesem Fall ist das Erstellen und Füllen eines Datasets u. U. zum Darstellen der Daten nicht nötig.

  • Weniger Programmieraufwand in bestimmten Fällen   In einigen Fällen, besonders bei Webanwendungen, ist zusätzlicher Programmieraufwand nötig, um den Zustand eines Datasets zu speichern. So wird beispielsweise eine Web Forms-Seite bei jeder Schleife neu erstellt. Wenn Sie keine Programmierelemente hinzufügen, die ein Dataset speichern und wiederherstellen, wird auch dieses bei jeder Schleife verworfen und neu erstellt. Wenn Sie einen Datenreader verwenden, um direkt aus einer Datenbank zu lesen, vermeiden Sie die zusätzlichen Schritte zum Verwalten des Datasets.

Empfehlungen für den Datenzugriff

Die folgenden Abschnitte enthalten Empfehlungen für die Datenzugriffsstrategie, die Sie bei bestimmten Anwendungstypen verwenden.

Windows Forms

Im Allgemeinen muss in Windows Forms ein Dataset verwendet werden. Windows Forms werden normalerweise für Rich Clients verwendet, wobei das Formular nicht wie bei Web Forms bei jeder Benutzeroperation (zusammen mit den Daten) erstellt und verworfen wird. Windows Forms-Anwendungen bieten Datenzugriffsmöglichkeiten, die die Vorteile der Verwaltung eines Cachespeichers mit Datensätzen nutzen, z. B. das separate Anzeigen von Datensätzen im Formular. Weitere Informationen finden Sie unter Erstellen von Clientdatenanwendungen.

Verwenden Sie ein Dataset speziell unter folgenden Bedingungen:

  • Wenn Sie wiederholt mit denselben Datensätzen arbeiten, z. B. wenn Sie einem Benutzer das Navigieren zwischen Datensätzen ermöglichen.

  • Wenn Sie die Windows Forms-Datenbindungsstruktur verwenden, die speziell für die Arbeit mit Datasets konzipiert wurde.

  • Bei allen oben aufgeführten Gründen für Web Forms.

Verwenden Sie unter den folgenden Umständen eine TableAdapter-Abfrage oder einen Datenbefehl:

  • Wenn Sie einen skalaren Wert aus der Datenbank aufrufen.

  • Wenn Sie eine Operation ohne Abfrage ausführen, z. B. einen DDL-Befehl.

  • Wenn Sie ein schreibgeschütztes Element in einem Formular anzeigen, z. B. einen Bericht erstellen. Anders ausgedrückt, wenn Sie die Daten nach dem Zugriff nicht mehr benötigen, verwenden Sie einen Datenbefehl.

Web Forms

Im Allgemeinen verwenden Sie Datenbefehle. Zum Abrufen von Daten verwenden Sie einen Datenreader. Weil Web Forms-Seiten und deren Steuerelemente und Komponenten bei jeder Schleife der Seite neu erstellt werden, ist es oft nicht sinnvoll, ein Dataset jedes Mal zu erstellen und zu füllen, es sei denn, Sie möchten das Dataset zwischen den Schleifen im Cachespeicher speichern.

Verwenden Sie ein Dataset unter folgenden Bedingungen:

  • Sie möchten mit mehreren separaten Tabellen oder Tabellen aus verschiedenen Datenquellen arbeiten.

  • Sie tauschen Daten mit einer anderen Anwendung oder Komponente, wie ein XML-Webdienst, aus.

  • Sie müssen ausführliche Bearbeitungsoperationen für jeden Datensatz ausführen, den Sie von der Datenbank aufrufen. Wenn Sie einen Datenbefehl und einen Datenreader verwenden, kann die Verarbeitung jedes Datensatzes beim Lesen dazu führen, dass die Verbindung für einen langen Zeitraum geöffnet bleibt, was wiederum die Leistung und Skalierbarkeit der Anwendung beeinflussen kann.

  • Wenn die Datenverarbeitung gegenseitig abhängige Datensätze betrifft (z. B. Suchen nach Informationen in verwandten Datensätzen).

  • Wenn Sie XML-Operationen, wie XSLT-Transformationen, an den Daten ausführen möchten.

  • Wenn Sie die leichtere Programmierung der Datasets bevorzugen.

XML-Webdienste

XML-Webdienste sind ASP.NET-Webanwendungen und verwenden daher dasselbe Modell wie Web Forms-Seiten: der XML-Webdienst wird bei jedem Aufrufen erstellt und verworfen. Daraus ließe sich schließen, dass das Datenzugriffsmodell für einen XML-Webdienst größtenteils dem von Web Forms entspricht. Jedoch handelt es sich bei XML-Webdiensten oft um Objekte der mittleren Ebene, die hauptsächlich dazu dienen, Daten mit anderen Anwendungen über das Web auszutauschen.

Verwenden Sie ein Dataset in folgenden Fällen:

  • Wenn der XML-Webdienst Daten sendet und empfängt, z. B. wenn er Daten als Rückgabewert einer Methode sendet und sie als Methodenargument empfängt. Dies ist eine grundlegende Entscheidung bei XML-Webdiensten. Selbst wenn andere Gründe für die Verwendung eines Datenbefehls vorliegen, muss für den Datenaustausch mit anderen Komponenten fast immer ein Dataset verwendet werden.

  • Bei jedem der oben aufgeführten Gründe für Web Forms.

Verwenden Sie einen Datenbefehl (und falls erforderlich einen Datenreader) unter den folgenden Bedingungen:

  • Der XML-Webdienst ruft einen Skalarwert ab.

  • Der XML-Webdienst führt eine Operation ohne Abfrage aus, z. B. einen DDL-Befehl.

  • Der XML-Webdienst ruft eine gespeicherte Prozedur auf, um die Logik innerhalb der Datenbank auszuführen.

Siehe auch

Konzepte

Neue Datenfeatures

Geräte und Datenzugriff

Weitere Ressourcen

Exemplarische Vorgehensweisen zur Arbeit mit Daten

Erste Schritte mit dem Datenzugriff

Herstellen von Datenverbindungen in Visual Studio

Vorbereiten der Anwendung auf den Empfang von Daten

Abrufen von Daten für die Anwendung

Anzeigen von Daten in Formularen in Windows-Anwendungen

Bearbeiten von Daten in der Anwendung

ADO.NET