3

コードファーストはデプロイメントに最適ですが、開発中は、本番環境に移行した後、コードファーストの方法でドメインモデルに加えられた変更をプッシュスルーする方法がわかりません。

本番環境で蓄積されたデータをどうすればよいですか?

データをバージョンAスキーマからバージョンBスキーマに手動で移行することになっていますか?変更が壊れるのを防ぐために、スキーマをコード化する必要がありますか?最初の展開後にコードファーストに別れを告げ、データベースファーストに切り替えますか?

私は何が欠けていますか?

4

3 に答える 3

2

@Henkieのコメントで述べたように、EF Data Migrationsは、あなたが説明している問題を正確に解決しようとします。

現在、本番環境でコードファーストEFを使用するアプリケーションがあります。私たちが行ったのは、EFと一緒に小さなスキーマ更新戦略を構築することでした。データベースが現在使用されているバージョンを理解するテーブルと、実行されるSQLスクリプトのディレクトリ(データの移行、スキーマの変更、バージョンテーブルのインクリメント)があります。

リンク:

  1. コードベース

  2. 自動

お役に立てれば。

于 2012-02-24T13:42:29.173 に答える
2

まず免責事項として、私は EF の経験があまりないので、nHibernate に関しては似ていると思います。ここで同様の質問に答えました。要するに、EF と NHibernate は単なる ORM フレームワークです。彼らはあなたのドメインの詳細な知識を持っていますが、現在の状態についてのみ歴史を知りません. ORM はデータベース スキーマを生成できますが、この機能は初期ロールアウトと統合テストにのみ役立ちます。進化し、(スキーマとデータの両方に対して)アップグレードが必要な本番アプリケーションでは、これに依存することはできません。

私の経験では、アップグレード スクリプトを作成する魔法のツールはありません。手動で作成するか、少なくとも開発者がレビューする必要があります。ツールは、 RoundhouseEのように、これらのスクリプトを実行するためのフレームワークを提供できます。Scott Allen は、'forward-only, run-once' アプローチに関する優れたシリーズを持っています。

于 2012-02-24T13:35:09.897 に答える
2

EF 4.3 で。移行を使用する必要があり、既存のデータベースで実行できます。

これはまさにあなたが話していることについての素晴らしいブログ投稿です: Julie Lermanによる既存のデータベースでの EF 4.3 Code First Migrations の使用。

現在、これについてもブログを書いています: Using Entity Framework Code First with an existing database

于 2012-02-25T02:26:58.493 に答える