2013-07-04 7 views
5

bereitstellen Kommen von ASP.net Webforms Wechsel zu MVC und Entity Framework Code ersten Ansatz habe ich jetzt eine Frage. Wie kann ich meine Umgebung für die Bereitstellung in der Produktion einrichten?Wie zur Produktion mit Entity Framework-Code zunächst

Ich verwende Visual Studio 2012 und stellt ein Webbereitstellungspaket bereit. Vor Ort habe ich SQL Express und in der Produktion habe ich SQL Server 2008.

Was ich will ist, einen Test lokal auf meinem PC zu entwickeln und von Zeit zu Zeit meine Lösung zur Produktion mit Web-Deploy-Paket zu implementieren. Ich möchte keine Migrationen im Produktionssystem ausführen, sondern stattdessen Skripte aus Visual Studio generieren, die ich dann an Produktions-SQL anhängen kann.

versuchte ich zu: Erste Migration in dev

  • erstellen.
  • Update-Datenbank lokal
  • Script generieren, update-Datenbank -script -sourcemigration: InitialCreate
  • Wenden Sie dieses Skript in der Produktion
  • die Anwendung für die Produktion bereitstellen

dieser Ansatz richtig ist? Was ist mit meinen Migrationen, die lokal ausgeführt werden? Werden sie aufgrund meines Migrationscodes nicht in der Produktion verwendet?

In global.asax

Migrator.RunMigrations(); 

wo RunMigrations ist eine statische Methode in einer benutzerdefinierten Migrator Klasse wie diese

public class Migrator 
    { 
     public static void RunMigrations() 
     { 
      var migrator = new Configuration(); 
      var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(migrator); 
      if (dbMigrator.GetPendingMigrations().Any()) 
      { 


       dbMigrator.Update(); 

      } 
     } 
    } 

Antwort

2

Sie können mit Web Setup Project (für die Installation einer MSI Benutzerdefinierte Aktion ist erforderlich) :

Die eigentliche Arbeit der Aktualisierung der Datenbank kann mit dem migrate.exe Tool durchgeführt werden. Das Ausführen des MSI-Pakets stellte sich als etwas herausfordernd heraus. Ich habe zuerst migrate.exe in das Installationspaket aufgenommen, damit es zusammen mit den Assemblys des Systems im bin-Verzeichnis bereitgestellt wird. Es gibt Unterstützung für das Ausführen einer EXE-Datei als benutzerdefinierte Aktion in den Web-Setup-Projekten. Leider konnte ich migrate.exe nicht ausführen, außer das Arbeitsverzeichnis wurde auf das Verzeichnis bin festgelegt. Das Arbeitsverzeichnis für benutzerdefinierte Aktionen ist standardmäßig c: \ windows \ system32. Um das zu umgehen, wurde ein kleines vb-Skript verwendet.

http://coding.abel.nu/2012/04/update-database-msi-custom-action/

UPDATE:

fand ich this und this und this, vielleicht helfen.

Verwandte Themen