LINQ to SQL Server Compact Database

by Jürgen Heckhuis 19. September 2009 12:33

Um in eine Datenbank zu Schreiben bzw. aus dieser zu Lesen bietet das .NET Framwork 3.5 die „LINQ to SQL“ Technologie. Im Gegensatz zur Vorgängertechnologie ADO.NET, bei der Datenbank-Commands für den SQL Server ausschließlich als Zeichenketten im Quellcode gespeichert werden, verfügt LINQ über den Vorteil der Implementierung in die .NET-Programmiersprache (LINQ = Language INtegrated Query). Einerseits steht dem Entwickler damit Typsicherheit auch in Datenabfragen zu Verfügung, zum anderen wird er, da die Abfrage wie normaler Quellcode im Editor seiner Programmiersprache formuliert wird, durch IntelliSense unterstützt - um nur zwei der vielen Vorteile von LINQ erwähnen.

Mithilfe von Visual Studio 2008 ab der Professional Edition besteht die Möglichkeit, über den Serverexplorer ein LINQ-Objektmodel aus einer „klassischen“ SQL-Datenbank zu generieren. Für einige Anwendungsszenarien, die Daten nur lokal speichern müssen, ist der Einsatz von SQL Server oftmals aber ein Overkill, quasi mit Kanonen auf Spatzen geschossen. Der Einsatz einer Compact Database bietet hier unter Umständen einige Vorteile: Compact Databases sind zwar lange nicht so ausfallsicher, aber dadurch, dass sie wie etwa Microsoft Access-Datenbanken, ausschließlich dateibasiert verwendet und nicht fest mir einer SQL Server-Instanz "verdrahtet" werden müssen, für Insellösungen oftmals flexibler und vor allem einfacher zu administrieren.

Die Benutzeroberfläche von Visual Studio 2008 sieht es leider standardmäßig nicht vor, ein Objektmodell für die Verwendung mit LINQ aus einer Compact Database zu erstellen. Doch das bedeutet nicht, dass LINQ mit Compact Databases nicht möglich ist. Es gibt die Option, das Werkzeug "SQL-Metal", das die Codegenerierung für ein LINQ to SQL-Objektmodell handelt, auch direkt anzusteuern, und wenn mann auf die Visual Studio IDE zu diesem Zweck verzichtet, dann klappt's auch mit Compact Databases.

Um ein LINQ-Datenobjektmodel für eine Microsoft SQL Server Compact Database zu generieren gehen sie wie folgt vor:

Schritt 1:

Kopieren Sie die bestehende Compact-Datenbank (mit der Dateiendung .sdf) in ihr Projektverzeichnis.

Schritt 2:

Kopieren Sie das Tool „SqlMetal.exe“, sowie die dazugehörige Konfigurationsdatei „SqlMetal.exe.config“ ebenfalls in ihr Projektverzeichnis.

Dieses befindet sich in folgendem Dateipfad: C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SqlMetal.exe

Schritt 3:

Klicken Sie im Projektmappen-Explorer im Visual Studio 2008 auf das Symbol „Alle Dateien anzeigen“

clip_image002

 

 

 

 

 

 

 

 

 

Abbildung 1: Alle Dateien anzeigen

Jetzt wird in der Projektmappe auch die Compact-Datenbankdatei (Abbildung 2: Das Datenbankobjektmodell zur Projektmappe hinzufügen) angezeigt.

Schritt 4:

Mit einem Rechtsklick auf die Compactdatenbankdatei „OfflineLegatro.sdf“ erscheint ein Kontextmenü. In diesem Menü wählen Sie „Zu Projekt hinzufügen“.

Jetzt öffnet sich ein Assistent zum Konfigurieren von Datenquellen. Dieser dient dem Erstellen von DataSets. Diesen Assistenten können Sie einfach abbrechen. Nun ist die Datenbank in die Projektmappe integriert.

Schritt 5:

Starten Sie die Windows Eingabeaufforderung und wechseln in das Verzeichnis, in das Sie zuvor das Tool „SqlMetal.exe“ kopiert habe. Dort rufen Sie es mit folgender Codezeile auf:

SqlMetal.exe OfflineLegatro.sdf /dbml:LegatroOffline.dbml /namespace:LegatroOffline /pluralize

 

Nun ist aus der Compactdatenbankdatei „OfflineLegatro.sdf“ ein Datenbankobjektmodell mit dem Namen “LegatroOffline.dbml” im Namespace „LegatroOffline“ erstellt worden.

Schritt 6:

clip_image004

 

 

 

 

 

 

 

 

 

Abbildung 2: Das Datenbankobjektmodell zur Projektmappe hinzufügen

Durch das Klicken auf das „Aktualisieren“ Symbol im Projektmappenexplorer wird nun auch die „LegatroOffline.dbml“-Datei angezeigt. Dieses ist das Datenbankobjektmodell. Klicken Sie mit der rechten Maustaste auf diese Datei. Es erscheint ein Kontextmenü, indem Sie den Befehl „Zu Projekt hinzufügen“ ausführen. Nun ist das Datenbankobjektmodel in das Projekt integriert.

Durch einen Doppelklick auf die „LegatroOffline.dbml“-Datei bekommen Sie eine grafische Ansicht über das komplette Datenbankobjektmodel. Nun ist die Datenbank als Objektmodel in das Projekt integriert und kann zur Programmierung verwendet werden.

Tags: , ,

Kommentare

11.04.2010 00:48:31 #

trove tkees

Interesting comments, i have bookmarked this url for further reading.

trove tkees Großbritannien

06.05.2010 21:27:12 #

tolani scarves

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon.

tolani scarves Großbritannien

08.05.2010 14:01:50 #

womens perfume

i need to install hebrew language but i dont have a windows disk what can i do? is there any way to instal the files without the disk? Sorry for my bad english?

womens perfume Großbritannien

08.05.2010 14:20:35 #

Mariana

I was actually looking around for a blog post on this issue, but stumbled across your site on Google!! I’m actually quite interested so will keep an eye out for updates Smile

Mariana Vereinigte Staaten von Amerika

15.05.2010 20:09:00 #

womens perfume

I need to extend security in BE just a little. I need to make a user registration form and disable comments for non-registered users. Has anyone done this? What difficulties might arise?

womens perfume Großbritannien

20.05.2010 00:05:21 #

Wahdo

Would it be cool to provide some more info on this in the future? Thanks

Wahdo Vereinigte Staaten von Amerika

20.05.2010 20:06:42 #

Jordan Retro

Thanks for the inspiration! Chat with you later

Jordan Retro Vereinigte Staaten von Amerika

22.05.2010 21:17:02 #

Jordan 1

I never belong anywhere, Homeless as a kid all the rest of it, but with my site I feel like I belong.

Jordan 1 Vereinigte Staaten von Amerika

24.05.2010 16:56:53 #

La Martina

Weißt du etwas über diesen Fehler: Linq to SQL and SQL Server Compact Error: “There was an error parsing the query.”

La Martina

La Martina Deutschland

03.06.2010 03:13:29 #

air jordans

It is inspiring to hear of success stories like yours. You do give us hope that we can succeed as we all bring a unique mix of strengths and weaknesses to the party.

air jordans Vereinigte Staaten von Amerika

21.06.2010 13:50:26 #

Recent Buzz

Great work,webmaster,nice design!

Recent Buzz Vereinigte Staaten von Amerika

25.06.2010 11:38:04 #

vaniqa

danke fur dei infooooo

vaniqa Deutschland

09.07.2010 10:08:51 #

chanel

Interessant zu lesen, thanks for sharing, toller Job auf dem Blog. Sie scheinen ein großer Blogger werden.

chanel Norwegen

30.07.2010 02:26:46 #

how do you get rid of bad breath

Carbohydrate food just like sugars could cause dentistry decay  Sweets  biscuits  pastries  buns  cakes  sticky breakfast bars  and also other comparable kinds of meal stick within the the teeth  providing foods for bacterias that live in dentistry plaque  The bacterias use sugars from residues of carbohydrates to multiply  Th

how do you get rid of bad breath Vereinigte Staaten von Amerika

Kommentar schreiben




  Country flag

biuquote
  • Kommentar
  • Live Vorschau
Loading



Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen