Ich benutze Codefirst und ich benutze Elmah. Ich neu erstellt jedes Mal, wenn die Datenbank, müssen Sie den Code manuell aus der Datei hinzufügen:
%Vor% Ich führe diesen Code automatisch aus?
Ich habe versucht, db.Database.ExecuteSqlCommand
zu verwenden, aber ich bekomme viele Fehler des Formulars:
Versuchen Sie diese Migration, bedenken Sie, dass erwartet wird, dass alle GO-Anweisungen in einer einzigen Zeile stehen und dass die Datei Zeilenenden verwendet. Ich habe Elmah mit dem Paket elmah.sqlserver NuGet installiert, das die Datei SqlServer.sql an der entsprechenden Stelle ablegt. Sie müssen den Ressourcennamen ändern, damit er zu Ihrem Projekt passt.
%Vor%Ich
nur um meinen Kommentar zum OP als Antwort zu formalisieren;
Ich denke, dass die beste Vorgehensweise hier wäre, dass nur Ihre Code-First-db von irgendwelchen radikalen Änderungen betroffen sein sollte (d. h. die Wiederherstellung der db beim Modellwechsel). Alle anderen Tabellen, die nichts damit zu tun haben, sollten sich in einer ApplicationServices-Datenbank oder ähnlichem und NICHT in der Core-Datenbank befinden. Auf diese Weise erstellen Sie keinen Support-Albtraum, wenn Sie Ihr Modell mit einer einfachen Änderung der Eigenschaften oder des Datentyps aktualisieren müssen. Außerdem verlieren Sie natürlich jedes Mal den gesamten Verlauf Ihrer Logging-Tabellen (und anderer), wenn Sie eine Änderung vornehmen.
Also, mit einem Wort, ich denke, dass Sie das falsche Problem mit einer möglicherweise ungeeigneten Lösung angehen.
So machen wir das in unserem Geschäft und in früheren Projekten, an denen ich gearbeitet habe.
Sie müssen Ihr Skript analysieren, es in separate SQL-Befehle aufteilen und jeden einzeln über SqlCommand
ausführen. Leider ist mir keine Möglichkeit bekannt, dies zu automatisieren.
Für das Skript müssen Sie die Stapel trennen ( GO
ist das Stapeltrennzeichen) und jeden Stapel einzeln an SQL Server senden. Ich habe tatsächlich ein Beispielprojekt dbutilsqlcmd , das genau das tut, und unterstützt auch mehr sqlcmd-Erweiterungen wie :setvar
und $(variable)
Ersetzung im Skript, was bei der Bereitstellung sehr nützlich sein kann.
Es gibt jetzt ein nugget-Paket, das die Elmah-Tabelle und die Procs für Sie initialisiert: Ссылка . Fügen Sie es Ihrem Webprojekt hinzu. Es wird dann zuerst EF-Code verwenden, um es für Sie zu erstellen. Es fügt Ihrem App_Start-Ordner einen Initialisierer hinzu, sodass Sie eigentlich keinen Code hinzufügen müssen. Es wird eine Migration zu Ihrer Datenbank hinzugefügt, um sicherzustellen, dass sie nur einmal hinzugefügt wird.
Tags und Links sql asp.net-mvc-3 sql-server ef-code-first