Was ich tun möchte, ist das SQL-Skript als eine Ressource in der Baugruppe einbetten und die SqlResource
Methode verwenden. Ich habe diesen Ansatz mit Visual Studio 2017 15.5.6 getestet.
Zuerst müssen Sie eine Migrationsdatei erstellen:
- In Visual Studio stellen Sie sicher, als Start-up-Projekt, das Projekt zu setzen, wo Ihre
DbContext
definiert ist
- in Visual Studio öffnen Sie die PMC: Ansicht -> andere Windows--> Package Manager Console
- In PMC Stellen Sie das Standard-Projekt auf das Projekt, das die DbContext hält
Wenn haben Sie beide EF Kern und EF 6.x installiert:
EntityFramework\Add-Migration RunSqlScript
Wenn Sie nur installiert EF 6.x:
Add-Migration RunSqlScript
einen SQL-Skript in der Migration Ordner hinzufügen (Ich nenne es mit dem gleichen Präfix wie die Migration Datei)
In th Im Dateieigenschaftenfenster stellen Sie sicher, dass die Build-Aktion "Eingebettete Ressource" ist. Beachten Sie, dass wir nicht in den Ausgabeordner kopieren müssen, da das SQL-Skript in die Assembly eingebettet wird.
Aktualisieren Sie die Up-Methode in der RunSqlScript
Migration
public override void Up()
{
string sqlResName = typeof(RunSqlScript).Namespace + ".201801310940543_RunSqlScript.sql";
this.SqlResource(sqlResName);
}
Ich hoffe, das hilft
Das ist für mich wie ein Zauber funktioniert. Ich recherchierte weiter und fand heraus, dass wir mit dem unten stehenden Code eine vorerstellte Stored Procedure hinzufügen können. var sqlFile = Pfad.Kombinieren (AppDomain.CurrentDomain.BaseDirectory, @ "Custom.sql"); SQL (Datei.ReadAllText (sqlFile)); –
Ich werde meine Antwort dann auch aktualisieren. – Rikard
Wo platzieren Sie Ihre SQL-Dateien im Projekt, damit Sie sie zur Laufzeit abrufen können? 'Path.Combine (AppDomain.CurrentDomain.BaseDirectory' versetzt mich in das Debug-Verzeichnis. – webworm