私は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:このシナリオでは疑問が生じる可能性があることを知っています理由これを行う必要があります。理想からは程遠いことはわかっていますが、解決する必要がある問題であり、横方向で作業するためのオプションが限られているので安心してください。
初期化子をnull
に設定すると、モデルの互換性チェックがスキップされます。
Database.SetInitializer<MyContext>(null);
EF 4.3以降の場合
Database.SetInitializer<MLTServerWatcherContext>(null);
または、EFの古いバージョンを使用している場合
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
(私は彼がEF 4.3を使用していると言っていたのを知っていますが、私もこのオプションを示すのは良いことだと思います)