EF 6 Code-First mit benutzerdefinierten gespeicherten Prozedur

8

Ich erstelle eine MVC 5-App mit einem Code-First-Ansatz, aber ich habe auch einige gespeicherte Prozeduren in der SQL Server-Datenbank erstellt, gibt es eine Möglichkeit, diese gespeicherten Prozeduren auch in c # zu generieren, wenn die Datenbank erstellt wird durch Ausführen eines SQL-Skripts, wenn ja, wo soll ich das tun?

    
edua_glz 25.04.2014, 20:00
quelle

3 Antworten

3

Späte Antwort, aber vielleicht bekommt jemand eine Antwort auf eine solche Frage

Ich hatte viel von views und functions und stored procedures in meinem Projekt, und die Lösung, die ich verwendet habe, war wie folgt:

  1. Erstellen Sie eine sql -Datei in Ihrem Projekt, um alle Ansichten und Funktionen und Prozeduren zu löschen, falls sie vorhanden sind, rufen Sie sie auf drop.sql zum Beispiel.
  2. Erstellen Sie für jedes view und function und stored procedure eine separate sql -Datei in Ihrem Projekt.
  3. Markieren Sie die gesamte SQL-Datei als Embedded Resource , klicken Sie mit der rechten Maustaste auf die Datei, dann auf Eigenschaft, dann auf Build Action und wählen Sie Embedded Resource
      

    YourFile.sql = & gt; Rechtsklick = & gt; Eigenschaften = & gt; Build Action, wählen Sie Embedded Resource

  4. Verwenden Sie in der Migrationsszenenfunktion ExecuteSqlCommand . Sie benötigen eine Methode, mit der Sie diese Dateien und den gesamten benötigten Code lesen können.

drop.sql Struktur

%Vor%

view.sql oder function.sql oder procedure.sql structure

%Vor%

Migrationsmethode

  

Ich habe angenommen, dass Sie alle SQL-Dateien im Ordner SQL erstellt haben    Innerhalb des Ordners Migrationen in Ihrem Projekt

%Vor%

Zum Schluss die Methode Laden

%Vor%
  

Der Vorteil dieser Lösung ist, dass sie jedes Mal ausgeführt wird, und Sie werden es tun   Stellen Sie sicher, dass im Falle eines Problems (z. B. nach einer Weile ein Feldname geändert oder eine Tabelle entfernt wurde, die in einer Ansicht verwendet wurde oder   Funktion oder Prozedur, ohne sich daran zu erinnern, dass Sie Ihre Prozeduren aktualisieren müssen, erhalten Sie einen Fehler und Sie können beheben, wenn Sie automatische Migrationen aktiviert haben.)

Hoffe das wird dir helfen

    
Monah 24.09.2016 07:03
quelle
2

Ich würde Code-Migrationen verwenden.

In Ihrem Nuget-Paket-Manager können Sie eine leere Migration einrichten, indem Sie

eingeben %Vor%

Dies sollte eine leere Klasse wie folgt erzeugen

%Vor%

Sie müssen lediglich Ihre gespeicherte Prozedur wie folgt hinzufügen (vergessen Sie nicht, die gespeicherte Prozedur in der Down-Methode zu löschen, falls Sie die Migration in Zukunft rückgängig machen müssen).

%Vor%

Aktualisieren Sie abschließend Ihre Datenbank

%Vor%     
Christophe Chang 13.07.2016 08:51
quelle
0

Sie müssen wahrscheinlich Migrationen verwenden, um damit umzugehen. Eine gut aussehende Lösung kann Ссылка gefunden werden. Verwenden von Ressourcen, aber ich bin sicher, dass Sie den Text aus Ihren .sql-Dateien auf die gleiche Weise lesen können, wenn Sie nicht den Ressourcenpfad hinuntergehen möchten.

    
ElvisLives 25.04.2014 20:15
quelle