2016-04-07 2 views
1

が、私は、次の設定があります:私のプロジェクトでエンティティフレームワークのコードファーストマイグレーションを本番環境に正しく昇格させるにはどうすればよいですか?私のASP.NET EF 6アプリで

internal sealed class Configuration : DbMigrationsConfiguration<Gcim.Management.Module.BusinessObjects.ManagementDbContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = true; 
     } 

     protected override void Seed(Gcim.Management.Module.BusinessObjects.ManagementDbContext context) 
     { 

     } 
    } 

を、私はEFコード-最初の移行が有効になっています。 私は、VSパッケージマネージャのプロンプトからupdate-databaseだけでなく、add-migrationも実行できます。 しかし、エンティティが変更され、移行を追加し、データベースを更新すると、dev環境でのみ動作します。私は私のASP.NETプロジェクトを公開すると が、私はまだ、このエラーを取得し、生産IISにインストールし、実行します。

The model backing the 'ManagementDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269). 

私は生産の増分DBの変更を強制するために行う必要があり、他ません、データ損失なし?

+0

デプロイメント手順は何ですか? migrate.exeを使用して移行を呼び出すことができます。通常は、継続的な統合設定(TeamCity、Jenkins、TFSなど)の展開の一環としてこれを実行しています。アプリケーションをどのように配備すれば、それと並行して移行を実行するかがわかります。 – NWard

+0

公開パッケージをC:\ inetroot \ www \ MyAppNameフォルダに解凍するだけです。移行を実行するために、migrate.exeが必要とするファイルは何ですか? VSでは、C#の移行ファイルはプロジェクトの一部ですが、プロジェクトの公開後はアプリパッケージの一部ではありません。あなたの場合、migrate.exeを実行するとき、何を移行する必要があるかを説明するために、パラメータとして何を提供しますか? –

+0

migrate.exeに関するドキュメントは、https:// msdn.microsoft.com/ja-data/jj618307.aspxでご覧になれます。ビルドステップは、ディレクトリ内の最新の移行を対象とするように設定しました。私たちのビルドサーバーは、バージョンコントロールを介して完全なソースコードにアクセスできたので、実行時に利用できるマイグレーションファイルがありました。あなたの場合、手作業ですべてをやっているので、解凍する直前に本番環境をターゲットにした移行を実行する必要があります。私はJenkins(無料!)、TFS、TeamCityなどのビルド/デプロイソリューションを使用して、このプロセスをより強力にすることをお勧めします。 – NWard

答えて

2

Entity Framework Nugetパッケージに含まれるmigrate.exeアプリケーションを使用して、特定の環境(この場合は運用環境)に対して特定の移行ファイルを実行できます。 Webアプリケーションを公開する前に、運用環境に対して最新の移行を実行する必要があります。これが完了すると、新しく導入されたアプリケーションは正常に動作します。

これは、接続文字列と移行クラス(複数可)を含む.dllと、場合によっては特定の移行を指定することで行います。たとえば:migrate.exe

Migrate.exe Gcim.Management.Module.BusinessObjects.dll /connectionString="Data Source=[YourProductionDatabase];Initial Catalog=[YourTable];Integrated Security=SSPI" /connectionProviderName="System.Data.SqlClient" /targetMigration="[NameofYourMigration]"

マニュアルは、ここで見つけることができます:https://msdn.microsoft.com/en-us/data/jj618307.aspx