Exemplarische Vorgehensweise: Abrufen, Aktualisieren, Einfügen und Löschen von Daten mit dem LinqDataSource-Steuerelement und dem DetailsView-Steuerelement
Aktualisiert: November 2007
In dieser exemplarischen Vorgehensweise erstellen Sie eine einfache Datenbanktabelle und eine Webseite, in der das LinqDataSource-Steuerelement verwendet wird. Über die Webseite können Benutzer Daten der Datenbanktabelle abrufen, aktualisieren und löschen sowie neue Daten einfügen. Die Daten werden mit einem DetailsView-Steuerelement angezeigt. Mit dem LinqDataSource-Steuerelement können Sie diese Operationen durchführen, ohne Select-, Update-, Insert- oder Delete-Anweisungen schreiben zu müssen.
Mit dem O/R-Designer erstellen Sie eine Klasse, die die Datenbanktabelle mit den Werten darstellt. Das LinqDataSource-Steuerelement interagiert mit dieser generierten Klasse, um die Daten abzurufen, zu aktualisieren, einzufügen und zu löschen.
Vorbereitungsmaßnahmen
Zur Implementierung dieser Prozeduren in Ihrer eigenen Entwicklungsumgebung ist Folgendes erforderlich:
Visual Studio 2008 oder Visual Web Developer Express Edition
SQL Server Express Edition auf dem Computer installiert. Sie können auch einen installierten SQL Server verwenden, jedoch müssen Sie an einigen der Prozeduren kleine Anpassungen vornehmen.
Eine ASP.NET-Website.
Erstellen einer Datenbanktabelle
Um die Schritte in dieser exemplarischen Vorgehensweise auszuführen, benötigen Sie eine Datenbanktabelle. Wenn Sie nicht über eine Tabelle verfügen, können Sie diese mit der folgenden Prozedur erstellen. Wenn Sie eine vorhandene Tabelle verwenden, entsprechen die Schritte in einigen der Prozeduren nicht genau Ihrer verwendeten Datenbank. Trotzdem gelten jedoch die in der exemplarischen Vorgehensweise veranschaulichten Konzepte.
So erstellen Sie eine Datenbanktabelle
Wenn die Website nicht bereits über den Ordner App_Data verfügt, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, klicken Sie auf ASP.NET-Ordner hinzufügen, und klicken Sie dann auf App_Data.
Klicken Sie mit der rechten Maustaste auf den Ordner App_Data, und klicken Sie dann auf Neues Element hinzufügen.
Wählen Sie unter Installierte Vorlagen die Option SQL-Datenbank aus, ändern Sie den Dateinamen in Reviews.mdf, und klicken Sie dann auf Hinzufügen.
Öffnen Sie im Server-Explorer den Knoten Reviews.mdf, und klicken Sie dann mit der rechten Maustaste auf den Ordner Tabellen.
Klicken Sie auf Neue Tabelle hinzufügen.
Erstellen Sie in der Tabelle die folgenden Spalten:
Spaltenname
Datentyp
Eigenschaften
MovieID
int
IsIdentity = Ja
Nicht 0 (null)
Primärschlüssel
Title
nvarchar(50)
Theater
nvarchar(50)
Review
nvarchar(1000)
Score
int
Nicht 0 (null)
Speichern Sie die Tabelle unter dem Namen MovieReviews.
Fügen Sie der Tabelle MovieReviews mehrere Datensätze mit Beispieldaten hinzu.
Klicken Sie im Server-Explorer mit der rechten Maustaste auf die Tabelle MovieReviews, und klicken Sie auf Tabellendaten anzeigen. Für MovieID müssen Sie keinen Wert angeben, da dieser von der Datenbank generiert wird.
Erstellen von Klassen zum Darstellen von Datenbankentitäten
Beim Arbeiten mit dem LinqDataSource-Steuerelement arbeiten Sie mit Klassen, die Datenbankentitäten darstellen. In Visual Studio 2008 oder Visual Web Developer Express Edition können Sie diese Klassen mit einem Tool erstellen.
So erstellen Sie eine Klasse für die Tabelle MovieReviews
Wenn die Website nicht bereits über den Ordner App_Code verfügt, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, klicken Sie auf ASP.NET-Ordner hinzufügen, und klicken Sie dann auf App_Code.
Klicken Sie mit der rechten Maustaste auf den Ordner App_Code, und klicken Sie dann auf Neues Element hinzufügen.
Wählen Sie unter Installierte Vorlagen die Vorlage LINQ to SQL-Klassen aus, benennen Sie die Datei in Reviews.dbml um, und klicken Sie dann auf Hinzufügen.
Der O/R-Designer wird angezeigt.
Ziehen Sie die Tabelle MovieReviews im Server-Explorer in das Fenster O/R-Designer.
Die Tabelle MovieReviews und ihre Spalten werden im Designerfenster als Entität mit dem Namen MovieReview dargestellt.
Speichern Sie die Datei Reviews.dbml.
Öffnen Sie im Projektmappen-Explorer die Datei Reviews.designer.cs bzw. Reviews.designer.vb.
Beachten Sie, dass sie jetzt Klassen für ReviewsDataContext und MovieReview enthält. Die ReviewsDataContext-Klasse stellt die Datenbank dar und die MovieReview-Klasse die Datenbanktabelle. Der parameterlose Konstruktor für die ReviewsDataContext-Klasse liest die Verbindungszeichenfolge aus der Datei Web.config.
Öffnen Sie die Datei Web.config.
Beachten Sie, dass die Verbindungszeichenfolge im connectionStrings-Element hinzugefügt wurde.
Schließen Sie die Klassendatei und die Datei Web.config.
Erstellen und Konfigurieren eines LinqDataSource-Steuerelements
Da Sie nun über eine Datenbanktabelle und über Klassen verfügen, die Datenbankentitäten darstellen, können Sie Daten auf einer ASP.NET-Webseite mit einem LinqDataSource-Steuerelement verwalten.
So erstellen und konfigurieren Sie ein LinqDataSource-Steuerelement
Erstellen Sie in Visual Studio eine neue ASP.NET-Webseite, und wechseln Sie in die Entwurfsansicht.
Ziehen Sie von der Registerkarte Daten der Toolbox ein LinqDataSource-Steuerelement auf das form-Element auf der Webseite.
Sie können die ID-Eigenschaft LinqDataSource1 übernehmen.
Legen Sie die ContextTypeName-Eigenschaft auf ReviewsDataContext fest.
Legen Sie die TableName-Eigenschaft auf MovieReviews fest.
Legen Sie AutoPage auf true fest, und wechseln Sie in die Quellansicht.
Das folgende Beispiel enthält das deklarative Markup für das LinqDataSource-Steuerelement.
<asp:LinqDataSource ContextTypeName="ReviewsDataContext" TableName="MovieReviews" AutoPage="true" ID="LinqDataSource1" > </asp:LinqDataSource>
Beachten Sie, dass Sie keine Datenbankbefehle zum Auswählen der Daten angeben müssen.
Hinzufügen eines Steuerelements zum Anzeigen von Daten
Sie können nun ein DetailsView-Steuerelement hinzufügen und es an das LinqDataSource-Steuerelement binden. Mit dem DetailsView-Steuerelement können Benutzer Daten anzeigen, die vom LinqDataSource-Steuerelement verwaltet werden.
So verbinden Sie die Daten der LinqDataSource mit einer DetailsView
Doppelklicken Sie auf der Registerkarte Daten der Toolbox auf das DetailsView-Steuerelement, um es der Seite hinzuzufügen.
Sie können die ID-Eigenschaft DetailsView1 übernehmen.
Legen Sie die DataSourceID-Eigenschaft auf LinqDataSource1 fest.
Legen Sie die DataKeyNames-Eigenschaft auf MovieID fest.
Legen Sie AllowPaging auf true fest.
Das folgende Beispiel enthält das deklarative Markup für das DetailsView-Steuerelement.
<asp:DetailsView DataSourceID="LinqDataSource1" DataKeyNames="MovieID" AllowPaging="true" ID="DetailsView1" > </asp:DetailsView>
Speichern Sie die Änderungen, und drücken Sie STRG+F5, um die Seite in einem Browser anzuzeigen.
Das DetailsView-Steuerelement zeigt die Werte des aktuellen Datensatzes der Tabelle MovieReviews an. Die Websteuerelemente zum Anzeigen der Spalten der Datenbanktabelle werden vom DetailsView-Steuerelement automatisch erstellt.
Ermöglichen, dass Benutzer Daten aktualisieren, einfügen und löschen
Die Befehle zum Aktualisieren, Einfügen und Löschen von Daten können über das LinqDataSource-Steuerelement erstellt werden.
So ermöglichen Sie Aktualisierungs-, Einfüge- und Löschvorgänge
Legen Sie im LinqDataSource-Steuerelement die EnableUpdate-Eigenschaft, die EnableInsert-Eigenschaft und die EnableDelete-Eigenschaft auf true fest.
Das folgende Beispiel enthält das deklarative Markup für das LinqDataSource-Steuerelement.
<asp:LinqDataSource ContextTypeName="ReviewsDataContext" TableName="MovieReviews" AutoPage="true" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" > </asp:LinqDataSource>
Legen Sie im DetailsView-Steuerelement die AutoGenerateEditButton-Eigenschaft, die AutoGenerateInsertButton-Eigenschaft und die AutoGenerateDeleteButton-Eigenschaft auf true fest.
Um die im DetailsView-Steuerelement angezeigten Felder zu begrenzen und die Reihenfolge der Felder anzugeben, legen Sie die AutoGenerateRows-Eigenschaft auf false fest.
Fügen Sie Felder für die Spalten Title, Theater, Rating und Review hinzu, und binden Sie diese an die entsprechenden Datenfelder.
Das folgende Beispiel enthält das deklarative Markup für das DetailsView-Steuerelement.
<asp:DetailsView DataSourceID="LinqDataSource1" DataKeyNames="MovieID" AutoGenerateRows="false" AutoGenerateEditButton="true" AutoGenerateInsertButton="true" AutoGenerateDeleteButton="true" AllowPaging="true" ID="DetailsView1" > <Fields> <asp:BoundField HeaderText="Title" DataField="Title" /> <asp:BoundField HeaderText="Theater" DataField="Theater" /> <asp:BoundField HeaderText="Number of Stars" DataField="Score" /> <asp:BoundField HeaderText="Review" DataField="Review" /> </Fields> </asp:DetailsView>
Die Spalte MovieID wird aus der Datenquelle gemeinsam mit den anderen Spalten ausgewählt. Sie wird im DetailsView-Steuerelement jedoch nicht angezeigt, und der Benutzer kann ihre Werte nicht ändern. Die MovieID-Eigenschaft muss ausgewählt werden, damit das LinqDataSource-Steuerelement die Befehle zum Aktualisieren, Einfügen und Löschen von Daten automatisch erstellen kann.
Beachten Sie, dass Sie keine Befehle für diese Datenoperationen angeben müssen.
Speichern Sie die Änderungen, und drücken Sie STRG+F5, um die Seite in einem Browser anzuzeigen.
Das DetailsView-Steuerelement zeigt die Felder des aktuellen Datensatzes der Tabelle MovieReviews an. Sie können Datensätze aktualisieren, einfügen und löschen, indem Sie auf die entsprechenden Schaltflächen des DetailsView-Steuerelements klicken.
Nächste Schritte
In dieser exemplarischen Vorgehensweise wurden die grundlegenden Funktionen zum Aktualisieren, Einfügen und Löschen von Datensätzen mit dem LinqDataSource-Steuerelement veranschaulicht. Sie können folgendermaßen vorgehen, um die weiteren Funktionen des LinqDataSource-Steuerelements kennen zu lernen:
Sie können filtern, welche Datensätze zurückgegeben werden, indem Sie einen Wert für die Where-Eigenschaft angeben. Außerdem können Sie nur eine Teilmenge der Spalten auswählen, indem Sie einen Wert für die Select-Eigenschaft angeben. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Auswählen und Filtern einer Teilmenge von Daten mit dem LinqDataSource-Steuerelement und dem GridView-Steuerelement.
Um sicherzustellen, dass sich die Daten in der Datenbank nicht geändert haben, seit sie von der Webseite gelesen wurden, werden die ursprünglichen Werte aller ausgewählten Daten vom LinqDataSource-Steuerelement gespeichert. Wenn die Aktualisierung an den Webserver gesendet wird, werden die gespeicherten Felder vom LinqDataSource-Objekt mit den aktuellen Werten in der Datenbank verglichen. Wenn sie übereinstimmen (der Datensatz also nicht geändert wurde), wird der Datensatz vom LinqDataSource-Objekt aktualisiert oder gelöscht. Das Speichern aller ursprünglichen Spaltenwerte kann ineffizient sein. Um dieses Problem zu vermeiden, können Sie der Datenbanktabelle eine timestamp-Spalte hinzufügen. Weitere Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Verwenden eines Timestamps mit dem LinqDataSource-Steuerelement zum Überprüfen der Datenintegrität.