Entity Framework: Gespeicherte Prozeduren

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Entity Framework bietet die Möglichkeit, mit einer Datenbank zu arbeiten, die lediglich einfache Tabellen enthält. Sie könnten so sämtliche Geschäftslogik in der Anwendung halten. Manch einer mag aber vielleicht Teile der Geschäftslogik in die Datenbank überführen oder, wenn die Datenbank schon existiert, dort belassen, damit diese von verschiedenen Anwendungen aus genutzt werden kann. Ein Beispiel sind Trigger, die bei Datenänderungen automatisch ausgelöst werden, ein anderes sind gespeicherte Prozeduren, über die sie sowohl Daten abfragen als auch anlegen, ändern oder löschen können. Dieser Artikel beschäftigt sich mit den gespeicherten Prozeduren und den Möglichkeiten, die sich unter Entity Framework zu ihrer Nutzung bieten.

Wenn Sie ein Objekt in Entity Framework anlegen wollen, erstellen Sie das Objekt neu und rufen die Add-Methode des jeweiligen DbSets auf. Der anschließende Aufruf der SaveChanges-Methode sorgt dann für das Übertragen der Änderung in der lokalen Auflistung in die Datenbank. Wenn Sie Eigenschaften eines Objekts ändern, übertragen Sie die Änderungen ebenfalls mit der SaveChanges-Methode. Und das geschieht auch, wenn Sie ein Element etwa mit der Remove-Methode entfernt haben – erst die SaveChanges-Methode löscht den entsprechenden Datensatz aus der zugrundeliegenden Tabelle.

Ausführung gespeicherte Prozeduren unter LINQ beobachten

Im Hintergrund führt die Anwendung entsprechende SQL-Anweisungen aus, wovon wir uns leicht überzeugen können, wenn wir den SQL Server Profiler mitlaufen lassen. Die grundlegende Bedienung erläutern wir im Artikel SQL Server-Interaktion mit dem Profiler verfolgen in Ausgabe 4/2016.

In unserem Fall wollen wir für die aktuelle Datenbank, deren ID wir im SQL Server Management Studio mit der folgenden Abfrage für die Zieldatenbank ermitteln, die ausgeführten SQL-Anweisungen anzeigen lassen:

SELECT DB_ID()

Das Ergebnis lautet beispielsweise 40. In den Ablaufverfolgungseigenschaften des SQL Server Profilers aktivieren Sie die Option Alle Spalten anzeigen. Dann können Sie nach einem Klick auf Spaltenfilter im Dialog Filter bearbeiten einen Filter für die Eigenschaft DatabaseID festlegen, und zwar auf den oben ermitteln Wert, in unserem Fall 40 (siehe Bild 1).

Festlegen eines Spaltenfilters

Bild 1: Festlegen eines Spaltenfilters

Danach aktivieren Sie noch die Option Alle Ereignisse anzeigen und selektieren dann im Bereich Ereignisauswahl das Ereignis Stored Procedures|RCP: Completed (siehe Bild 2). Damit legen wir fest, dass alle per Remote ausgeführten Abfragen vom Profiler erfasst und ausgegeben werden.

Auswahl der zu filternden SQL-Aktionen

Bild 2: Auswahl der zu filternden SQL-Aktionen

Beispielprojekt vorbereiten

Als Beispielprojekt verwenden wir ein Projekt auf Basis der Vorlage Visual Basic|Windows Desktop|WPF App. Dieser fügen wir mit den Methoden aus dem Artikel Von Access zu EF: Step by step aus Ausgabe 5/2018, erweitert um die Informationen aus Von Access zu EF: Update 1 aus der vorliegenden Ausgabe, ein Entity Data Model hinzu, aus dem wir dann eine entsprechende SQL Server-Datenbank generieren.

Automatisch generierte gespeicherte Prozedur ermitteln

 

Schreibe einen Kommentar