Wie können Sie SQL-Abfragen in c # einbetten?

7

Ich schreibe ein neues Projekt in C # mit einer Reihe von SQL-Abfragen darin. Einige sind relativ groß und komplex. Ich möchte wissen, was der beste Weg ist, sie zu lagern. Im Idealfall würde ich gespeicherte Prozeduren in der Datenbank erstellen, aber die Datenbank wird von vielen anderen Anwendungen verwendet, daher ist es besser, wenn ich die Prozeduren, die für meine Anwendung spezifisch sind, in meiner Anwendung behalten kann.

Optionen scheinen zu sein:

  1. ein String-Literal ( const string query ="Select * From MyTable" )
    • Pros: einfach, kurz
    • Nachteile: keine Syntax-Hervorhebung, unordentlich für lange Abfragen
  2. Erstellen Sie für jede Abfrage eine Datei als QueryName.sql
    • Vorteile: Syntax-Highlighting, besser für große, komplexe Abfragen
    • Nachteile: Viele Dateien für viele Abfragen (eine Abfrage pro Datei), möglicherweise langsamer zum Lesen der Abfrage aus der Inhaltsdatei?
  3. Irgendwelche anderen Ideen?

Gibt es einen zusätzlichen Gedanken, gibt es eine Möglichkeit, stark typisierte Klassendefinitionen aus den SQL-Abfragen zu erzeugen?

    
ForbesLindesay 15.08.2011, 11:05
quelle

3 Antworten

21

Eine andere Option wäre:

4: Erstellen Sie eine Datei für jede Abfrage als QueryName.sql

aber machen Sie es zu einer eingebetteten Ressource in Ihrer Assembly. Auf diese Weise haben Sie keine physischen Dateien auf der Festplatte, aber Ihre SQL-Abfragen sind in Ihrer eigenen Datei in Ihrer Visual Studio-Lösung gut versteckt, und Sie können den SQL-Text aus diesen eingebetteten Ressourcen einfach in Ihre SqlCommand -Objekte extrahieren / p>

Sehen Sie sich diese Ressourcen an, damit Sie loslegen können:

marc_s 15.08.2011, 12:08
quelle
2

Warum nicht einfach Entity-Framework oder Linq-to-SQL

verwenden?

Wenn Sie eine Tabelle namens Foos yoiu haben, erhalten Sie einen Code wie:

%Vor%

was wiederum zu SQL übersetzt wie:

%Vor%

Der obige C # -Code ist stark typisiert und das Entity-Framework erstellt alle benötigten Datenklassen für Sie.

    
Rune FS 15.08.2011 11:09
quelle
0

Ich würde für jeden ORM wie EF oder Subsonic gehen.

    
Yohann Canu 15.08.2011 11:24
quelle

Tags und Links