2013-07-04 11 views
5

asp.net webformsからmvcおよびエンティティフレームワークコードに切り替える方法最初に私は今質問があります。本番環境に導入するための環境を設定するにはどうすればよいですか?エンティティフレームワークコードでプロダクションにデプロイする方法

私はVisual Studio 2012を使用して、Webデプロイメントパッケージをデプロイします。ローカルにはSQL Expressがあり、SQL Server 2008が稼働しています。

私のPC上でローカルにテストを開発し、時折、Webデプロイメントパッケージを使用して自分のソリューションをプロダクションに展開します。私は生産システムでマイグレーションを実行したくないのですが、代わりにプロダクションSQLに追加できるビジュアルスタジオからスクリプトを生成したいのです。

私がしようとした:devに最初の移行を作成

  • アップデートデータベースは、ローカルに
  • はスクリプトを生成し、更新データベース-script -sourcemigration:InitialCreate
  • が生産
  • にこのスクリプトを適用しますが

はこの正しいアプローチであり、生産にアプリケーションをデプロイしますか?ローカルで実行されるマイグレーションはどのようなものですか?マイグレーションコードのために私が配備した時点まで、実際には稼働しませんか? RunMigrationsはWeb Setup Projectとすることができます。この

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(); 

      } 
     } 
    } 

答えて

2

のようなカスタム移行クラスの静的メソッドである

のGlobal.asaxで

Migrator.RunMigrations(); 

(インストール用MSIカスタムアクションが必要とされています) :

実際にデータベースを更新する作業は、migrate.exeツールを使用して行うことができます。 MSIパッケージを正しく実行させるには、ちょっとした難題があることが判明しました。まず、migrate.exeをインストールパッケージに含めて、システムのアセンブリと共にbinディレクトリに展開させました。 Webセットアッププロジェクトでは、カスタムアクションとしてexeファイルを実行する機能がサポートされています。残念ながら、作業ディレクトリがbinディレクトリに設定されていない限り、migrate.exeを動作させることができませんでした。カスタムアクションの作業ディレクトリは、デフォルトではc:\ windows \ system32です。これを処理するために、小さなvbスクリプトが使用されました。

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

UPDATE:

私は多分助け、thisthisthisを発見しました。

関連する問題