0

開発中は、Entity Framework 4.3 Migrations のようなフレームワーク (ただし、Migration クラスではなく SQL スクリプトを操作する必要があります) を使用して、すべての開発者データベースを最新の状態に保つというアイデアが気に入っています。誰かが最新のソースを取得するために更新を行い、アプリケーションを実行しようとすると、データベースを最新の移行に更新する必要がある (または移行を自動的に行う) 必要があるというエラーが表示されます。移行ファイルにはタイムスタンプが付けられるため、開発者は 2 つのファイルに同じ名前を付けたり、ファイルを実行する順序を気にする必要がありません。

WebDeploy 展開パッケージをビルドする準備ができたら、運用データベースを最新の db バージョンに移行するために必要なスクリプトをパッケージに含めたいと思います。したがって、MSBuild または WebDeploy は、どのスクリプトをパッケージ化する必要があるかを決定する必要があります。デプロイの場合、EF が提供するようなアプリケーション自体の更新を試みたくありません。パッケージを IT 部門に渡すか、展開サーバーを介して自動展開したいと考えています。

私の質問のいくつかは次のとおりです。

  1. EF 4.3 は、開発のニーズに応じて DBMigration クラスの代わりに SQL スクリプトを使用できますか?

  2. MSBuild または WebDeploy はデータベースの移行の概念を理解していますか (たとえば、EF. 4.3 migrationHistory テーブルを認識しますか)、それとも、prod データベースを最新の移行に移行するために実行する必要があるスクリプトだけを提供する必要がありますか? どのスクリプトをパッケージ化する必要があるかを手動で決定することは、私がやりたいことではありません。移行を理解する MS WebDeploy 拡張機能はありますか?

  3. 私の懸念やアイデアは有効ですか?この辺は調べているだけなのでよくわかりません。

4

2 に答える 2

2

あなたの懸念は正しいと思います。開発中は、開発者のマシンの同期を維持するものであれば何でも構いません。展開するときは、より多くの制御が必要です。

私のプロジェクトでは、すべてのデータベースが同じ手順で同じ順序で移行されるように、コードベースの移行のみを使用することにしました。自動移行とデータベース作成は、データベースが存在し有効であることのみをチェックするカスタム初期化戦略によって無効になっています。

詳細については、 「EF 移行によるデータベースの作成または変更の防止」に詳しく書いています。また、最終的に複数の開発者で発生するマージの競合についても少し調べました。

于 2012-03-06T20:56:03.763 に答える
0
  1. You can run SQL in the classes by calling the Sql method, or generate SQL from a migration by using the -script parameter with the update-database command.

  2. No. They were looking at adding support for webdeploy but apparently decided against it before rtm. They did however release a command line app (and powershell script obviously) which you could call from either.

What I do in my projects is create an startup module in my applications and run any migrations that haven't been deployed automatically - Triggering EF migration at application startup by code. It's not perfect, developers have to run the app after getting latest before changing the db, but it works for both get latest and deployment.

于 2012-02-25T08:48:45.337 に答える