Zuweisen von gespeicherten Prozeduren zum Durchführen von Aktionen zum Aktualisieren, Einfügen und Löschen (O/R-Designer)

Gespeicherte Prozeduren können dem O/R-Designer hinzugefügt und als typische DataContext-Methoden ausgeführt werden. Sie können auch verwendet werden, um das standardmäßige LINQ to SQL-Laufzeitverhalten zu überschreiben, das Einfügungen, Aktualisierungen und Löschungen durchführt, wenn Änderungen von Entitätsklassen in einer Datenbank gespeichert werden (z. B. beim Aufruf der SubmitChanges-Methode).

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 Durchführung von INSERT- oder UPDATE-Vorgängen auf entsprechende Werte festgelegt werden. Weitere Informationen finden Sie unter Aufgaben der Entwickler beim Überschreiben von Standardverhalten.

Hinweis

LINQ to SQL verarbeitet von der Datenbank generierte Werte für die Identitätsspalte (automatisch inkrementiert), die ROWGUID-Spalte (von der Datenbank generierter, weltweit eindeutiger Bezeichner (GUID)) und die Zeitstempelspalte automatisch. Datenbankgenerierte Werte in anderen Spaltentypen führen unerwartet zu einem NULL-Wert. Um die von der Datenbank generierten Werte zurückzugeben, sollten Sie IsDbGenerated manuell auf true und AutoSync auf einen der folgenden Werte festlegen: AutoSync.Always, AutoSync.OnInsert oder AutoSync.OnUpdate.

Konfigurieren des Aktualisierungsverhaltens einer Entitätsklasse

Die Logik zur Aktualisierung einer Datenbank (Einfügen, Aktualisieren und Löschen) mit Änderungen, die an den Daten in LINQ to SQL-Entitätsklassen vorgenommen wurden, wird standardmäßig von der LINQ to SQL-Runtime bereitgestellt. Basierend auf dem Schema der Tabelle (den Spalten- und Primärschlüsselinformationen) werden von der Runtime Standardbefehle für INSERT, UPDATE und DELETE erstellt. Wenn das Standardverhalten nicht erwünscht ist, kann das Updateverhalten konfiguriert werden, indem spezielle gespeicherte Prozeduren zur Durchführung der erforderlichen Einfüge-, Update- 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 standardmäßige Updateverhalten auch dann überschrieben werden, wenn die Datenbank den Zugriff auf Tabellen über gespeicherte Prozeduren erfordert.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in diesem Artikel. Möglicherweise verwenden Sie eine andere Edition von Visual Studio oder andere Umgebungseinstellungen. Weitere Informationen finden Sie unter Personalisieren der IDE.

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 auf die Datei .dbml im Projektmappen-Explorer.)

  2. Erweitern Sie im Server-Explorer oder Datenbank-Explorer den Knoten Gespeicherte Prozeduren, und suchen Sie die gespeicherten Prozeduren, die für die Einfüge-, Update- 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 Updates 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. Klicken Sie auf Anpassen.

  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 die Befehle Update und Delete 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 Übernehmen.

    Hinweis

    Sie können mit der Konfiguration des Verhaltens jeder Klassen-/Verhaltenskombination fortfahren, solange Sie nach jeder Änderung auf Anwenden klicken. Wenn Sie die Klasse oder das Verhalten ändern, bevor Sie auf Anwenden klicken, wird ein Warnungsdialogfeld eingeblendet, in dem Sie die Möglichkeit erhalten, Ihre Änderungen zu übernehmen.

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