Gewusst wie: Zuweisen von gespeicherten Prozeduren zur Durchführung von Aktualisierungs-, Einfüge- und Löschvorgängen (O/R-Designer)

Aktualisiert: November 2007

Gespeicherte Prozeduren können dem O/R-Designer hinzugefügt und als typische DataContext-Methoden ausgeführt werden. Mit ihnen kann auch das LINQ to SQL-Standardlaufzeitverhalten überschrieben werden, das beim Speichern von Änderungen von Entitätsklassen in einer Datenbank Einfüge-, Aktualisierungs- und Löschvorgänge durchführt (beispielsweise, wenn die SubmitChanges-Methode aufgerufen wird).

Hinweis:

Wenn Ihre gespeicherte Prozedur Werte zurückgibt, die an den Client zurückgesendet werden müssen (beispielsweise Werte, die in der gespeicherten Prozedur berechnet werden), sollten Sie Ausgabeparameter in Ihrer gespeicherten Prozedur erstellen. Wenn Sie keine Ausgabeparameter verwenden können, sollten Sie eine partielle Methodenimplementierung schreiben und sich nicht auf vom O/R-Designer erzeugte Überschreibungen verlassen. Member, die datenbankgenerierten Werten zugeordnet werden, müssen nach erfolgreicher Beendigung von INSERT- oder UPDATE-Vorgängen auf entsprechende Werte festgelegt werden. Weitere Informationen finden Sie unter Aufgaben des Entwicklers beim Überschreiben des Standardverhaltens (LINQ to SQL).

Hinweis:

LINQ to SQL behandelt datenbankgenerierte Werte für die Identitätsspalte (automatisch inkrementiert), die ROWGUID-Spalte (datenbankgenerierte GUID) und Zeitstempelspalte automatisch. Datenbankgenerierte Werte in anderen Spaltentypen führen unerwartet zu einem NULL-Wert. Um die datenbankgenerierten Werte zurückzugeben, sollte manuell IsDbGenerated auf true und AutoSync auf eine der folgenden Einstellungen festgelegt werden: Always, OnInsert oder OnUpdate.

Konfigurieren des Aktualisierungsverhaltens einer Entitätsklasse

Standardmäßig wird die Logik zur Aktualisierung einer Datenbank (Einfüge-, Aktualisierungs- und Löschvorgänge) mit Änderungen, die von LINQ to SQL-Entitätsklassen an Daten vorgenommen wurden, von der LINQ to SQL-Laufzeit bereitgestellt. Basierend auf dem Schema der Tabelle (den Spalten- und Primärschlüsselinformationen) werden von der Laufzeit Standardbefehle für Einfüge-, Aktualisierungs- und Löschvorgänge erstellt. Wenn das Standardverhalten nicht erwünscht ist, kann das Aktualisierungsverhalten konfiguriert werden, indem spezielle gespeicherte Prozeduren zur Durchführung der erforderlichen Einfüge-, Aktualisierungs- und Löschvorgänge für die Bearbeitung der Daten in der Tabelle zugewiesen werden. Diese Vorgehensweise ist auch dann sinnvoll, wenn kein Standardverhalten erzeugt wird, z. B. wenn die Entitätsklassen Ansichten zugeordnet sind. Schließlich kann das Standardaktualisierungsverhalten auch dann überschrieben werden, wenn die Datenbank den Zugriff auf Tabellen über gespeicherte Prozeduren erfordert.

Hinweis:

Ihr Computer zeigt für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung möglicherweise andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

So weisen Sie gespeicherte Prozeduren zu, um das Standardverhalten einer Entitätsklasse zu überschreiben

  1. Öffnen Sie die LINQ to SQL-Datei im Designer. (Doppelklicken Sie im Projektmappen-Explorer auf die DBML-Datei.)

  2. Erweitern Sie im Server-Explorer/Datenbank-Explorer den Knoten Gespeicherte Prozeduren, und suchen Sie die gespeicherten Prozeduren, die für die Einfüge-, Aktualisierungs- und/oder Löschbefehle der Entitätsklasse verwendet werden sollen.

  3. Ziehen Sie die gespeicherte Prozedur in den O/R-Designer.

    Die gespeicherte Prozedur wird dem Methodenbereich als DataContext-Methode hinzugefügt. Weitere Informationen finden Sie unter DataContext-Methoden (O/R-Designer).

  4. Wählen Sie die Entitätsklasse aus, für die die gespeicherte Prozedur zur Durchführung von Aktualisierungen verwendet werden soll.

  5. Wählen Sie im Fenster Eigenschaften den Befehl aus, der überschrieben werden soll (Einfügen, Aktualisieren oder Löschen).

  6. Klicken Sie auf die Auslassungszeichen (...) neben den Wörtern Laufzeit verwenden, um das Dialogfeld Verhalten konfigurieren zu öffnen.

  7. Wählen Sie Anpassen aus.

  8. Wählen Sie die gewünschte gespeicherte Prozedur in der Liste Anpassen aus.

  9. Untersuchen Sie die Listen Methodenargumente und Klasseneigenschaften, um zu überprüfen, ob die Methodenargumente den entsprechenden Klasseneigenschaften zugeordnet sind. Ordnen Sie die ursprünglichen Methodenargumente (Original_ArgumentName) den ursprünglichen Eigenschaften (PropertyName (Original)) für Aktualisierungs- und Löschbefehle zu.

    Hinweis:

    Standardmäßig werden Methodenargumente Klasseneigenschaften zugeordnet, wenn die Namen übereinstimmen. Wenn geänderte Eigenschaftennamen von Tabelle und Entitätsklasse nicht mehr übereinstimmen, kann es notwendig sein, die entsprechende Klasseneigenschaft für die Zuordnung auszuwählen, wenn der Designer die korrekte Zuordnung nicht ermitteln kann.

  10. Klicken Sie auf OK oder auf Übernehmen.

    Hinweis:

    Sie können mit der Konfiguration des Verhaltens jeder Klasse/Verhalten-Kombination fortfahren, solange Sie nach jeder Änderung auf Übernehmen klicken. Wenn Sie eine Klasse oder ein Verhalten ändern bevor Sie auf Übernehmen klicken, wird ein Warnungsdialogfeld angezeigt, das Ihnen Gelegenheit bietet, alle Änderungen zu übernehmen.

    Um zur Verwendung der Standardlaufzeitlogik für Aktualisierungen zurückzukehren, klicken Sie im Fenster Eigenschaften auf die Auslassungszeichen neben dem Einfüge-, Aktualisierungs- oder Löschbefehl, und wählen Sie dann im Dialogfeld Verhalten konfigurieren die Option Laufzeit verwenden aus.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen (O/R-Designer)

Exemplarische Vorgehensweise: Erstellen von gespeicherten Prozeduren zum Aktualisieren der Northwind-Kundentabelle

Konzepte

DataContext-Methoden (O/R-Designer)

Insert-, Update- und Delete-Operationen (LINQ to SQL)

Weitere Ressourcen

Object Relational Designer (O/R-Designer)

LINQ to SQL