2011-05-23 17 views
0

特別なエンティティ(テーブル)が存在しない場合は作成する必要があるため、 'DropCreateDatabaseIfModelChanges' - Initializerクラスを使用する必要があります。私の問題は、DbContext内に別のエンティティがあり、モデルの互換性チェックの一部ではないはずです。Entity Framework 4.1モデルの互換性チェックを無効にする

私は、次のようなエラーメッセージが出てい:

Model compatibility cannot be checked because the EdmMetadata type was not inclu 
ded in the model. Ensure that IncludeMetadataConvention has been added to the Db 
ModelBuilder conventions. 

は、このチェックから特別なエンティティを除外するための任意の可能性はありますか?

EDIT: 私はDevartの示唆をしました。問題は私が最初にやったよりも違うようです。 EFがCheckedContextで新しいデータベースを作成するようにすれば、すべてうまく動作します。 This実用的なソリューションです。しかし、私は私のNonCheckedContextウィッヒは、既存のテーブルを使用する必要があります使用してみますとき...

EDIT2は、上記のエラーメッセージを取得しています。以前はデータベースが存在しないときはすべて正常に動作します。しかし、それは私のためのドロップ/データベースを作成するためのオプションはありません。

答えて

1

考えられる解決方法:DbContextから継承したコンテキストクラスを作成し、それからベースの継承サブコンテキスト(CheckedContextおよびNonCheckedContext)を継承し、それに応じてデータベース初期化戦略を設定します。
まずCheckedContextにアクセスして、すべてのチェックを開始するようにしてください。

+0

これは動作しません。 DbSet <>がなくてもDbContextから派生したラッパークラスを作成することはできません。そうすることで、基本クラス(DbContext)のコンストラクタの実行中に例外が発生します。 2つの別々のDbContextクラスを作成することはできますが、それは解決策ではありません。 – 0xbadf00d

+0

申し訳ありませんが、それは問題ではありませんでした。私は私の最初のポストを更新しました。 – 0xbadf00d

関連する問題