Freigeben über


Zuweisen gespeicherter Prozeduren zum Ausführen von Aktualisierungen, 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 außer Kraft zu setzen, das Einfüge-, Aktualisierungs- und Löschvorgang ausführt, wenn Änderungen aus Entitätsklassen in einer Datenbank gespeichert werden (z. B. beim Aufrufen der SubmitChanges Methode).

Hinweis

Wenn Ihre gespeicherte Prozedur Werte zurückgibt, die an den Client zurückgesendet werden müssen (z. B. in der gespeicherten Prozedur berechnete Werte), erstellen Sie Ausgabeparameter in Ihren gespeicherten Prozeduren. Wenn Sie keine Ausgabeparameter verwenden können, schreiben Sie eine partielle Methodenimplementierung, anstatt auf Überschreibungen zu vertrauen, die vom O/R-Designer generiert werden. Mitgliedern, die datenbankgenerierten Werten zugeordnet sind, müssen nach erfolgreichem Abschluss von INSERT- oder UPDATE-Operationen geeignete Werte zugewiesen werden. Weitere Informationen finden Sie unter Verantwortlichkeiten des Entwicklers beim Überschreiben des Standardverhaltens.

Hinweis

LINQ to SQL verarbeitet datenbankgenerierte Werte automatisch für Identität (Autoinkrement), Rowguidcol (datenbankgenerierte globale eindeutige Kennung (GUID)) und Zeitstempelspalten. Datenbankgenerierte Werte in anderen Spaltentypen führen unerwartet zu einem NULL-Wert. Um die datenbankgenerierten Werte zurückzugeben, sollten Sie manuell auf "true" und AutoSync auf eine der folgenden Werte festlegenIsDbGenerated: "AutoSync.Always", "AutoSync.OnInsert" oder "AutoSync.OnUpdate".

Konfigurieren des Updateverhaltens einer Entitätsklasse

Standardmäßig wird die Logik zum Aktualisieren einer Datenbank (Einfügungen, Aktualisierungen und Löschungen) mit Änderungen, die an den Daten in LINQ to SQL-Entitätsklassen vorgenommen wurden, von der LINQ to SQL-Laufzeit bereitgestellt. Die Laufzeit erstellt Standard INSERTUPDATE- und DELETE Befehle, die auf dem Schema der Tabelle basieren (die Spalten- und Primärschlüsselinformationen). Wenn das Standardverhalten nicht gewünscht ist, können Sie das Updateverhalten konfigurieren, indem Sie bestimmte gespeicherte Prozeduren zum Ausführen der erforderlichen Einfügungen, Aktualisierungen und Löschungen zuweisen, die zum Bearbeiten der Daten in der Tabelle erforderlich sind. Diese Vorgehensweise ist auch dann sinnvoll, wenn kein Standardverhalten erzeugt wird, z. B. wenn die Entitätsklassen Ansichten zugeordnet sind. Schließlich können Sie das Standardaktualisierungsverhalten außer Kraft setzen, wenn für die Datenbank tabellenzugriff über gespeicherte Prozeduren erforderlich ist.

Hinweis

Die Anleitungen in diesem Artikel veranschaulichen die neueste Version der interaktiven Entwicklungsumgebung (IDE), die in Visual Studio verfügbar ist. Auf Ihrem Computer werden möglicherweise andere Namen oder Positionen für einige der Elemente der Benutzeroberfläche angezeigt. Möglicherweise verwenden Sie eine andere Version 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 außer Kraft zu setzen

  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 oder Datenbank-Explorergespeicherte Prozeduren , und suchen Sie die gespeicherten Prozeduren, die Sie für die Befehle "Einfügen", "Aktualisieren" und/oder "Löschen" der Entitätsklasse verwenden möchten.

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

    Die gespeicherte Prozedur wird dem Methodenbereich als DataContext Methode hinzugefügt. Weitere Informationen finden Sie unter DataContext Methods (O/R Designer).For more information, see DataContext Methods (O/R Designer).

  4. Wählen Sie die Entitätsklasse aus, für die Sie die gespeicherte Prozedur zum Ausführen von Updates verwenden möchten.

  5. Wählen Sie im Eigenschaftenfenster den Befehl aus, der außer Kraft gesetzt 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. Überprüfen Sie die Liste der 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 Update und Delete Befehle zu.

    Hinweis

    Standardmäßig ordnen Methodenargumente Klasseneigenschaften zu, wenn die Namen übereinstimmen. Wenn geänderte Eigenschaftsnamen nicht mehr zwischen der Tabelle und der Entitätsklasse übereinstimmen, müssen Sie möglicherweise die entsprechende Klasseneigenschaft auswählen, der zugeordnet werden soll, wenn der Designer die richtige Zuordnung nicht ermitteln kann.

  10. Klicken Sie auf OK oder Übernehmen.

    Hinweis

    Sie können das Verhalten für jede Klassen- und Verhaltenskombination weiterhin konfigurieren, solange Sie nach jeder Änderung auf Übernehmen klicken. Wenn Sie die Klasse oder das Verhalten ändern, bevor Sie auf "Übernehmen" klicken, wird ein Warndialogfeld angezeigt und bietet Ihnen die Möglichkeit, Ihre Änderungen anzuwenden.

Wenn Sie die Standardlaufzeitlogik für Updates verwenden möchten, klicken Sie im Eigenschaftenfenster auf die Auslassungspunkte neben dem Befehl "Einfügen", "Aktualisieren" oder "Löschen", und wählen Sie dann im Dialogfeld "Verhalten konfigurieren" die Option "Laufzeit verwenden" aus.