Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Wer lange mit Access gearbeitet hat, schreibt Aktionsabfragen entweder mit der Entwurfsansicht für Abfragen oder erstellt diese per SQL-Quellcode. Vielleicht kombinieren Sie auch beide Varianten und passen per Entwurf erstellte Abfragen in der SQL-Ansicht an. Unter VBA verwendet man außerdem oft DAO, um Datensatzgruppen zu öffnen und Daten anzulegen, zu bearbeiten oder zu löschen. In einem Entity Data Model können Sie auch SQL-Abfragen absetzen, sowohl für Auswahl- als auch für Aktionsabfragen. Allerdings gibt es auch LINQ – die Abfragesprache für das Entity Framework. Dieser Artikel zeigt, wie Sie gängige SQL-Aktionsabfragen oder DAO-Aktionen in LINQ übersetzen.
Beispieldateien
Im Download zu diesem Artikel finden Sie einen Ordner mit den Laufzeitdateien der als Beispiel verwendeten Rechnungsverwaltung. Außerdem finden Sie in der Datei VonSQLZuLINQ.linq alle in diesem Artikel vorgestellten Beispiele.
Was ist LINQ
LINQ heißt Language Integrated Query und ist die Abfragesprache für Entity Data Models. Im Gegensatz zu VBA, wo Sie die Abfragen immer in SQL formulieren und als Parameter von Methoden wie OpenRecordset (bei Auswahlabfragen) oder Execute (bei Aktionsabfragen) angegeben haben, bietet LINQ die direkte Integration in die Sprache Visual Basic (und auch C#).
Im Artikel EF: Daten abfragen mit VB und LINQ (www.datenbankentwickler.net/166) haben wir bereits gezeigt, wie Sie Auswahlabfragen mit LINQ und VB realisieren. Nun schauen wir uns an, wie wir Aktionsabfragen unter LINQ abbilden können.
IntelliSense mit LINQ nutzen
LINQ bietet gegenüber SQL-Abfragen den Vorteil, IntelliSense nutzen zu können. Am einfachsten testen können wir LINQ-Ausdrücke nach wie vor mit dem Tool LINQPad. Wir arbeiten hier mit der Version 5. Um auf die Daten einer SQL Server-Datenbank zugreifen zu können, richten wir mit folgenden Schritten eine Verbindung ein.
Die einzige Voraussetzung ist, dass es eine .exe für das Projekt gibt und dass Sie wissen, wo die Konfigurationsdatei gespeichert ist – was nach dem Debuggen eines Desktop-Projekts mit Visual Studio aber beides vorhanden ist:
- Starten Sie LINQPad 5.
- Klicken Sie im linken Bereich auf Add connection.
- Wechseln Sie im Dialog Choose Datacontext aus Bild 1 zum unteren Bereich und wählen Sie dort den Eintrag Entity Framework (DbContext V4/V5/V6) aus und klicken Sie auf Next.
- Wählen Sie im Dialog Entity Framework dbContext Connection die Dateien für die Eigenschaften Path to Custom Assembly und Path to application config file aus. Hier wählen Sie die .exe-Datei aus, beispielsweise aus dem Ordner Rechnungsverwaltung aus dem Download zu diesem Artikel. Nach der Auswahl der ersten Datei werden Sie in einem weiteren Dialog aufgefordert, die Datenbank-Context-Klasse auszuwählen.
- Anschließend sieht der Dialog Entity Framework DbContext Connection wie in Bild 2 aus. Hier können Sie mit der Schaltfläche Test noch prüfen, ob die Verbindung hergestellt werden kann. Mit dem Aktivieren der Option Remember this connection stellen Sie sicher, dass die Verbindung auch beim nächsten Start von LINQPad noch vorhanden ist.
Bild 1: Einrichten einer Datenquelle mit LINQ
Bild 2: Einrichten der Verbindungsinformationen
Der linke Bereich zeigt nun die Entitäten und Felder der Verbindung an (siehe Bild 3). Mit einem Klick der rechten Maustaste auf eine der Entitäten öffnen Sie ein Kontextmenü, das bereits einige mögliche Befehle für diese Entität anzeigt. Klicken Sie einen dieser Einträge an, wird die passende LINQ-Abfrage im Query-Fenster eingefügt.