質問: 私は私の会社のためのインターンのウェブサイトのプロジェクトを持っています。私は、Code FirstプロジェクトでEntity Framework 6でMVC5を使用しています。 私の会社のイントラネットなので、2つのデータベースが必要です。生産(リリース)で1。 dev(Debug)の1です。 私はWeb.config、Web.Debug.configおよびWeb.Release.configファイルを次のように編集しました。 Web.Config ``` ``` Web.Debug.Config ``` ``` Web.Release.config ``` ``` リリースモデドでWeb Deployを使用してプロジェクトをデプロイすると、すべてのジョブが完了し、最終的なWeb.Configにカタログ用の適切な値の`IntranetRelease`られます。 私の問題は、私のサイトは、データベース起こす動作しないということです`IntranetRelease`から更新されていない`Intranet`データベースを。 私は`Intranet`完全なコピーを作成し、手動で`IntranetRelease` `Intranet`を作成しました。それは動作しますが、私は人々がWebサイトを使用すると、すべてのデータが`IntranetRelease`データベースに格納されるため、その作業を行うことはできません。 私は自分のプロジェクトでリリースモードで`Add-Migration xxx`を試しましたが、何も変更されません。 目標はこれです: リリースイントラネットが稼動しているときは、私はdevデータベースで作業します。すべての変更がリリースに適している場合、Web Deployを使用`do something`て新しいバージョンを導入し、データを失うことなく、 `IntranetRelease`データベースを自分の変更で更新する必要があります。 助けてくれてありがとう、貧しい私の英語のために申し訳ありません。
回答: あなたはそれのためにマイグレーションを使うことができますが、マイグレーションが実際に何をしているかを認識しなければなりません。 したがって、Devデータベースには現在の状態があり、リリースデータベースにはおそらくそれより古い状態が2つあります。 あなたはDev-DatabaseでMigrationを作成してから、リリースデータベースでコードを実行します(ddlコマンドの使用権が必要なので、Webサイトからはこれを行わないことをお勧めします)。たとえば、データベースをチェックして更新するコンソールプログラムを実行することで、これを達成できます。 だから、いくつかの簡単なステップでそれを行う方法: 1. あなたのConfigファイルにConnectionStringを作成します(これは開発者データベースになります) 2. Release.Config-FileにConncetionStringを作成します(App.Configが本番データベースになる場合はSlowCheetaを使用します) 3. DevにDatabaseModelを作成します。 4. Add-Migration "SomeNameGoesHere"を使用して、現在のデータベースからモデル定義データベースへの移行を構築します。 5. Releaseをビルドするとき、EFはRelease-Databaseを必要な(たとえば、モデル定義の状態に)移行するように注意します。プロダクションデータベースの更新データベースを使用しないでください。 移行中にデータを保存するにはUp()およびDown()関数を使用します(EFはデータを失い、警告するでしょう) トピックの詳細については、 http://msdn.microsoft.com/en-us/data/jj591621.aspxを参照してください。