Gewusst wie: Aktualisieren, Einfügen und Löschen von Daten mit dem LinqDataSource-Steuerelement
Aktualisiert: November 2007
Mit dem LinqDataSource-Steuerelement können Webseiten erstellt werden, auf denen Benutzer Daten aktualisieren, einfügen und löschen können. Sie müssen keine SQL-Befehle angeben, da das LinqDataSource-Steuerelement für diese Vorgänge dynamisch erstellte Befehle verwendet. Sie können Aktualisierungs-, Einfüge- und Löschvorgänge mit dem LinqDataSource-Steuerelement aktivieren, um Benutzern des Ändern von Daten zu ermöglichen. Verbinden Sie das Steuerelement anschließend mit einem datengebundenen Steuerelement, mit dem Benutzer Daten aktualisieren können, z. B. mit dem DetailsView-Steuerelement oder dem GridView-Steuerelement. Zum Anpassen der zu aktualisierenden Werte können Sie Parameter hinzufügen oder einen Ereignishandler erstellen und die Werte dynamisch ändern.
In diesem Thema wird beschrieben, wie das LinqDataSource-Steuerelement zum automatischen Aktivieren von Aktualisierungs-, Einfüge- und Löschvorgängen verwendet wird. Außerdem wird das Anpassen der zu aktualisierenden Werte beschrieben. Abschließend wird in diesem Thema veranschaulicht, wie ein Ereignishandler erstellt wird, der eine Eigenschaft programmgesteuert festlegt, bevor einer Datenbank ein Datensatz hinzugefügt oder dieser aktualisiert wird.
Für das automatische Aktivieren von Aktualisierungs-, Einfüge- und Löschvorgängen sind jeweils ähnliche Schritte erforderlich. In den Verfahren in diesem Thema wird das Aktivieren von allen drei Vorgängen veranschaulicht. Es müssen jedoch nicht alle drei Vorgänge aktiviert werden. Sie müssen nur die Vorgänge aktivieren, die Sie benötigen.
Wenn Sie mit dem LinqDataSource-Steuerelement nicht vertraut sind, finden Sie weitere Informationen unter Übersicht über das LinqDataSource-Webserversteuerelement und Exemplarische Vorgehensweise: Abrufen, Aktualisieren, Einfügen und Löschen von Daten mit dem LinqDataSource-Steuerelement und dem DetailsView-Steuerelement.
Automatisches Aktualisieren, Einfügen und Löschen von Daten
Die folgenden Einstellungen sind erforderlich, um das LinqDataSource-Steuerelement für das automatische Behandeln von Datenaktualisierungen zu aktivieren:
Das in der ContextTypeName-Eigenschaft angegebene Objekt muss von der DataContext-Klasse abgeleitet werden.
Die Eigenschaften Select und GroupBy dürfen nicht festgelegt werden.
Mindestens eine der Eigenschaften EnableUpdate, EnableDelete oder EnableInsert muss auf true festgelegt werden.
So aktivieren Sie das Aktualisieren, Einfügen und Löschen von Daten
Fügen Sie einer ASP.NET-Webseite ein LinqDataSource-Steuerelement hinzu.
Legen Sie die ContextTypeName-Eigenschaft auf den Namen eines Objekts fest, das von der DataContext-Klasse abgeleitet ist.
Wenn Sie den O/R-Designer von Visual Studio 2008 zum Erstellen einer Klasse verwenden, die eine SQL-Datenbanktabelle darstellt, wird die erstellte Klasse automatisch von DataContext abgeleitet.
Legen Sie den TableName auf den Namen der Entitätsklasse fest, die die zugeordnete Datenbanktabelle darstellt.
Legen Sie die Eigenschaften EnableUpdate, EnableDelete und EnableInsert des LinqDataSource-Steuerelements auf true fest.
Fügen Sie ein datengebundenes Steuerelement hinzu, z. B. ein DetailsView-Steuerelement, und legen Sie dessen DataSourceID-Eigenschaft auf die ID des LinqDataSource-Steuerelements fest.
Legen Sie die DataKeyNames-Eigenschaft des Datensteuerelements auf den Namen der Primärschlüsselspalte(n) der Tabelle fest.
Bieten Sie den Benutzern im datengebundenen Steuerelement eine Möglichkeit, zwischen den Aktualisierungs-, Lösch- und Bearbeitungsmodi zu wechseln.
Beispielsweise können Sie dem datengebundenen Steuerelement Schaltflächen hinzufügen oder das automatische Erstellen dieser Schaltflächen mit dem Steuerelement ermöglichen.
Im folgenden Beispiel wird das deklarative Markup für den Teil einer ASP.NET-Webseite dargestellt, der ein LinqDataSource-Steuerelement und ein DetailsView -Steuerelement enthält. Die Steuerelemente sind so konfiguriert, dass Benutzer die Daten in einer Tabelle mit dem Namen Products anzeigen, aktualisieren, einfügen und löschen können.
<asp:LinqDataSource ContextTypeName="ExampleDataContext" TableName="Products" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" > </asp:LinqDataSource> <asp:DetailsView DataSourceID="LinqDataSource1" DataKeyNames="ProductID" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" AutoGenerateInsertButton="true" AllowPaging="true" ID="DetailsView1" > </asp:DetailsView>
Hinzufügen von Parametern, um Daten zu aktualisieren, einzufügen oder zu löschen
Standardmäßig müssen zum Aktualisieren, Einfügen oder Löschen von Daten keine Parameter hinzugefügt werden. Die Werte eines datengebundenen Steuerelements werden an das LinqDataSource-Steuerelement übergeben. Das LinqDataSource-Steuerelement verwendet diese Werte, um die entsprechende Eigenschaft festzulegen. LINQ to SQL erstellt die Befehle zum Ändern der Datenquelle. Weitere Informationen finden Sie unter LINQ to SQL.
Sie können Parameter für Aktualisierungs-, Einfüge- oder Löschvorgänge angeben. Dies ist empfehlenswert, wenn Sie einen Standardwert bereitstellen oder definieren möchten, ob leere Zeichenfolgenwerte in null umgewandelt werden. Sie müssen nicht für jeden Wert, der aktualisiert oder eingefügt werden soll, einen Parameter angeben. Dies ist nur für die Werte erforderlich, die angepasst werden sollen. Alle Werte, die nicht durch einen Parameter definiert sind, werden vom LinqDataSource-Steuerelement automatisch behandelt.
Zum Verwalten von Parametern enthält das LinqDataSource-Steuerelement die folgenden Auflistungen: UpdateParameters, InsertParameters und DeleteParameters.
So fügen Sie Parameter zum Aktualisieren, Einfügen und Löschen von Daten hinzu
Fügen Sie eine Parameterdefinition für jeden Wert hinzu, den Sie ändern möchten.
Im folgenden Beispiel wird gezeigt, wie ein Parameter für eine Eigenschaft mit dem Namen Category hinzugefügt wird. Der Parameter wird den beiden Auflistungen UpdateParameters und InsertParameters hinzugefügt.
<asp:LinqDataSource ContextTypeName="ExampleDataContext" TableName="Products" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" > <UpdateParameters> <asp:Parameter Name="Category" DefaultValue="Miscellaneous" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="Category" DefaultValue="Miscellaneous" /> </InsertParameters> </asp:LinqDataSource>
Wenn der Benutzer für die Eigenschaft Category keinen Wert angibt, wird der Standardwert in der Datenbank gespeichert.
Programmgesteuertes Festlegen von Werten
Sie können Ereignishandler für die Ereignisse Inserting, Updating und Deleting des LinqDataSource-Steuerelements erstellen, um Eigenschaften vor dem Ausführen von Datenoperationen programmgesteuert festzulegen. Alle Eigenschaften, die Sie nicht im Ereignishandler festlegen, werden vom LinqDataSource-Steuerelement automatisch festgelegt.
So legen Sie Werte programmgesteuert fest
Erstellen Sie einen Ereignishandler für das Ereignis Inserting, Updating oder Deleting des LinqDataSource-Steuerelements.
Fügen Sie dem Ereignishandler Code hinzu, mit dem der zu ändernde Wert programmgesteuert festgelegt wird.
Die zu aktualisierenden, einzufügenden oder zu löschenden Daten sind in den folgenden Eigenschaften enthalten:
Ereignis
Eigenschaft
Klasse
Alle diese Eigenschaften geben ein Objekt vom Typ Object zurück. Sie können die von diesen Eigenschaften zurückgegebenen Objekte in den Typ der Entitätsklasse umwandeln, die die Daten darstellt. Nach dem Umwandeln können Sie die Eigenschaften für diesen Typ festlegen.
Im folgenden Beispiel wird ein Ereignishandler für das Inserting-Ereignis veranschaulicht, der eine DateModified-Spalte auf das aktuelle Datum und die aktuelle Uhrzeit festlegt. Er wandelt das Objekt der NewObject-Eigenschaft in den Product-Typ um.
Protected Sub LinqDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceInsertEventArgs) Dim product As Product product = CType(e.NewObject, Product) product.DateModified = DateTime.Now End Sub
protected void LinqDataSource_Inserting(object sender, LinqDataSourceInsertEventArgs e) { Product product = (Product)e.NewObject; product.DateModified = DateTime.Now; }
Im folgenden Beispiel wird das deklarative Markup für ein LinqDataSource-Steuerelement dargestellt, das die LinqDataSource_Inserting-Methode an das Inserting-Ereignis bindet.
<asp:LinqDataSource ContextTypeName="ExampleDataContext" TableName="Products" OnInserting="LinqDataSource_Inserting" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" > </asp:LinqDataSource>
Kompilieren des Codes
Zum Aktualisieren, Einfügen oder Löschen von Daten mit dem LinqDataSource-Steuerelement, muss eine Entitätsklasse erstellt werden, die eine Datenbanktabelle darstellt. Eine Entitätsklasse kann mit dem O/R-Designer von Visual Studio 2008 erstellt werden.
Sicherheit
In diesem Beispiel ist ein Textfeld enthalten, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellt die ASP.NET-Seite sicher, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
Weitere Informationen zum Speichern einer Verbindungszeichenfolge finden Sie unter Gewusst wie: Sichern von Verbindungszeichenfolgen bei der Verwendung von Datenquellensteuerelementen.
Informationen zum Ausblenden von vertraulichen Informationen in Fehlermeldungen finden Sie unter Gewusst wie: Anzeigen von sicheren Fehlermeldungen.
Siehe auch
Konzepte
Übersicht über das LinqDataSource-Webserversteuerelement