7

codefirst EF4を使用したデータベースリファクタリングのベストプラクティスは何ですか?

RecreateDatabaseIfModelChangesオプションが実行できない場合に、人々がクラスとデータベースをどのように変更するかを知りたいと思います。データの移行を行う必要があります。

現在、Microsoftには、モデルを最初に使用してこれを行うためのソリューションがあります。

http://blogs.msdn.com/b/adonet/archive/2010/02/08/entity-designer-database-generation-power-pack.aspx?PageIndex=2#comments

誰かが最初にコードのための良い戦略を持っていますか?

4

3 に答える 3

1

モデルとデータベーススキーマが同期していない場合にウェブマスターに通知し、何が異なるかを表示するデータベースコンテキストイニシャライザーに取り組んでいます。これは、コードファーストモデルとデータベーススキーマの両方を完全に制御したい開発者にとって便利です。見てみな:

https://github.com/rialib/efextensions

于 2011-03-03T01:13:03.083 に答える
1

EFチームは、この問題を解決するEFの移行機能に取り組んできました。

http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx

Scott Guは最近のヨーロッパツアーで、この機能をまもなくリリースする予定であると述べました。息を止めています。

エキサイティングなアップデート:

これは現在、CTPとしてリリースされています:http: //blogs.msdn.com/b/adonet/archive/2011/07/27/code-first-migrations-august-2011-ctp-released.aspx

于 2011-07-07T12:36:32.090 に答える
1

私のCodeFirstアプリケーションでは、ローカルビルドに本番環境にないことを示すapp.configフラグがあります。私が本番環境にいないときは、データベースを完全に削除して再作成します。私の本番データベースユーザーには、web.config変換が何らかの理由で失われた場合でもデータベースを削除する権限がないため(したがって、EFはデータベースを再作成しようとします)、本番データベースは削除されず、代わりに例外がスローされます。

私のワークフローは次のようになります。

  1. 最新の変更を加えたコードの本番ブランチをチェックしてください
  2. 迅速なスモーク/回帰テスト(これは、コードを本番ブランチにチェックインする前にすでに実行されている必要がありますが、念のため)
  3. 本番データベースの最新のバックアップをダウンロードして、ローカルのSQLEXPRESSサーバーにインストールします
  4. ローカルコードが作成したデータベース(本番コードであっても、ローカルであるためデータベースを再作成します)と本番バックアップの間でOpenDBDiffを実行します。
  5. 生成されたスクリプトを確認し、本番バックアップに対して実行してみます
  6. エラーが発生しなかったと仮定して、本番バックアップで生成されたコードをデータベースに上書きし、本番データに対してテストを実行して、すべてのデータがそのまま残っていることを確認します。
  7. 実際の本番データベースでスクリプトを実行します。

ステップ2は、最新のデータモデルに基づいて新しいクリーンなデータベースを自動的に作成するため、まだ本番環境に対応していない可能性のある開発作業からのアーティファクトがない最新のデータベースがあることを常に知っています。

于 2011-07-07T12:47:04.480 に答える