web-dev-qa-db-ja.com

Entity Framework 4.3でモデル互換性チェックを無効にするにはどうすればよいですか?

私はEF 4.3を使用しており、EF Code First 4.3を使用して別のライブラリによって生成されたデータベースと通信する必要があるコンテキストがあります。コンテキストが次のような例外をスローしています

'Context'コンテキストを支えるモデルは、データベースが作成されてから変更されています。 Code First Migrationsを使用してデータベースを更新することを検討してください

EF 4.1では、ModelBuilderからIncludeMetadataConventionを削除することでこれを無効にすることができました。ただし、4.3ではこの規則は廃止されており、効果はありません。

EF 4.3コンテキストで、EF 4.3で生成されたデータベースと対話するにはどうすればよいですか別のコンテキストで作成?私が見つけた唯一のオプション(理想からはほど遠い)はメタデータテーブルを削除することです。これによりbothコンテキストはデータベースがEFによって構築されたものではないと想定します。

PS:このシナリオでは疑問が生じる可能性があることを知っています理由これを行う必要があります。理想からは程遠いことはわかっていますが、解決する必要がある問題であり、横方向で作業するためのオプションが限られているので安心してください。

39
STW

初期化子をnullに設定すると、モデルの互換性チェックがスキップされます。

Database.SetInitializer<MyContext>(null);
69
bricelam

EF 4.3以降の場合

Database.SetInitializer<MLTServerWatcherContext>(null);

または、EFの古いバージョンを使用している場合

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

(私は彼がEF 4.3を使用していると言っていたのを知っていますが、私もこのオプションを示すのは良いことだと思います)

15
Diego Vieira