2012-05-16 16 views
38

私はEF 4.3で作業しており、EF Code First 4.3を使用して別のライブラリによって生成されたデータベースと対話する必要のあるコンテキストを持っています。コンテキストが例外をスローするEntity Framework 4.3でモデルの互換性チェックを無効にするにはどうすればよいですか?

データベースが作成されて以来、 'コンテキスト'コンテキストを裏付けるモデルが変更されました。これはModelBuilderのからIncludeMetadataConventionを除去することにより、diabledできEF 4.1では データベース

を更新するために、コードファーストの移行を使用することを検討してください。しかし、4.3では、この規約は廃止され、もはや効果はありません。

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

PS:私は、このシナリオは、私はこれを行う必要があり理由について疑問を提起する可能性がある知っています。私はそれが理想から遠いことは知っていますが、私は解決する必要があり、側面的に作業するための選択肢が限られていることを確信しています。

答えて

67

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

Database.SetInitializer<MyContext>(null); 
+2

パーフェクト、まさに私が望んだように動作します。ありがとう! – STW

+1

あなたはこれをどこに置いていますか? – jep

+4

コンテキスト上の静的コンストラクタは、ほとんどのアプリケーションでうまく機能しているようです。 – bricelam

15
EF 4.3以上の場合

Database.SetInitializer<MLTServerWatcherContext>(null); 

それともEF

modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 

の古いバージョンを使用している場合(私は彼が、彼はEF 4.3を使用していると知っているが、私はそれは良いことだと思います

関連する問題