質問: 私は最初にEFコードに不慣れです。本番環境に既存のデータベースがあり、最初にEF 4.3.1コードを使用しましたが、すべてうまくいきました。データベーススキーマを更新したところ、例外が発生しました。 ``` System.InvalidOperationException: The model backing the 'MyDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269). ``` `DropCreateDatabaseIfModelChanges`ので使用できません。スキーマの変更に対処するための最も簡単な方法は何ですか? ありがとうございました。
回答: EF-CFの移行はかなり新しい概念であるため、EFのように古くから証明されたプロセスを採用して新しいツールで機能するように変更することをお勧めします。これが私たちのやり方です。 1. ローカル開発には`DropCreateDatabaseIfModelChanges`を使用してください。これにより、ローカルの開発者用コピーをモデルと同期させることができます(コード内)。ビルド/実行するたびに、更新されたローカルデータベースが得られます。 `Database.SetInitializer(new DBContextInitializerNameHere());`を使用してテストデータなどを読み込むこともできます`Database.SetInitializer(new DBContextInitializerNameHere());` 2. RedGateのSQLCompareツールを使用して、ローカル開発者と運用環境を比較し、展開用の変更スクリプトを自動的に生成します。 (注:ツールから自動デプロイすることもできます) 主な利点は、ローカルの開発プロセスを変更する必要がないこと、そして生成されたスクリプトを介して反復可能でバージョン管理されたデプロイメントを取得できることです。また、これを他のSQLソース管理ツールと組み合わせて、すべてのSQLオブジェクトと配置スクリプト(データであっても)をソース管理に保持することもできます。 いいえ、私はこれらの人たちのために働きません。私は彼らの道具が大好きで、それがこの同じ問題をどのように助けてくれたのか。