40

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

データベースが作成されてから、「コンテキスト」コンテキストをサポートするモデルが変更されました。CodeFirstMigrationsを使用してデータベースを更新することを検討してください

EF 4.1ではIncludeMetadataConvention、ModelBuilderからを削除することでこれを無効にすることができました。ただし、4.3では、この規則は非推奨になり、効果がなくなりました。

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

PS:このシナリオでは、なぜこれを行う必要があるのか​​について疑問が生じる可能性が高いことを私は知っています。私はそれが理想からは程遠いことを知っていますが、それは私が解決する必要のある問題であり、横方向で作業するための限られた選択肢しかありませんのでご安心ください。

4

2 に答える 2

70

イニシャライザをに設定するnullと、モデルの互換性チェックがスキップされます。

Database.SetInitializer<MyContext>(null);
于 2012-05-16T18:06:56.090 に答える
15

EF4.3以降の場合

Database.SetInitializer<MLTServerWatcherContext>(null);

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

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

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

于 2012-11-06T12:28:31.233 に答える