私はさまざまなオブジェクトをデータベースに永続化するためにEntity Framework 4.1を使用するプロジェクトで作業しています。Entity Framework 4.1データベースの作成後、コンテキストのバッキングモデルが変更されました。
Visual StudioでローカルSQL Express DBを使用してテストしており、Jenkinsサーバーはコミット済みコードをテストサーバーに展開します。これが発生すると、一時的に私のローカル接続文字列を変更してテストDBサーバを指し示し、単体テストを実行してテストデータベースを再作成し、最新のエンティティなどに一致させる。
私は最近サーバーがこのエラーを表示しています:
データベースが作成されて以来、 'EntityFrameworkUnitOfWork'コンテキストを裏付けるモデルが変更されました。データベースを手動で削除または更新するか、IDatabaseInitializerインスタンスを使用してDatabase.SetInitializerを呼び出します。たとえば、DropCreateDatabaseIfModelChanges戦略では、データベースが自動的に削除され、再作成され、必要に応じて新しいデータでシードされます。
これは通常、私たちのコードが変更されたことを示しています。ユニットテストを実行してデータベースを再作成する必要があります。私はちょうどそれを除いて!私は展開プロセスに何か問題があるとは思わない - テストサーバー上のDLLは、私のローカル環境と同じバージョンであるようだ。データベースが作成されてからモデルが変更されたことに関するこのエラーの原因となるその他の設定や環境要因はありますか?
私はここです - 何か助けてくれてありがとう!
'System.Data.Entity.Infrastructure.EdmMetadata.TryGetModelHash(YourDbContext)'メソッドを使用してModelHashを取得し、ローカルPCとテストサーバー上でそれらが異なるかどうかを確認できますか? – Marc
データベースを再生成した後にコンテキストまたはPOCOを再生成するためにカスタムツールを実行しましたか? –
@Marcはい、ハッシュは異なるようです。 – DaveBeta