web-dev-qa-db-ja.com

EF4が「指定されたスキーマが無効です」というエラーをスローしています

コンテキストでselectを実行すると、奇妙なEF4 "Entity Frameworkv4"エラーが発生します。

私が得るのは:

指定されたスキーマは無効です。エラー:タイプ「AnalyzerConfigurationModel.AnalyzerMetadataParameter」が使用できないため、関係「AnalyzerConfigurationModel.FK_AnalyzerMetadataParameters_AnalyzerMetadata」はロードされませんでした。

エラーを生成するためのクエリは次のとおりです。

Using context As New AnalyzerConfigurationEntities
      Dim EFAnalyzerConfiguration = (From P In context.AnalyzerConfigurations
                                     Where P.Name = analyzerConfigurationName).FirstOrDefault
End Using

スキーマを以下に示します。 alt text

接続文字列を何度もチェックしましたが、そうではありません。すべてがうまく見えます。このスキーマから生成されるXMLがオフになっているかどうかはわかりません。しかし、そこも見ていて、他のプロパティと何も見当違いはありません。誰かがこれに遭遇したことがありますか?

13
irperez

ソリューションエクスプローラー(VS 2012)でEDMXファイルを展開し、各.ttファイルを右クリックして、[カスタムツールの実行]を選択すると、問題も修正されることがわかりました。これはdeよりも簡単かもしれません

14
CWaters

また、参照しているプロジェクトにEntityFrameworkがインストールされていることを確認してください。インストールされていない場合、依存コードでこのエラーが発生します。

https://www.nuget.org/packages/EntityFramework

2
dynamiclynk

これを説明させてください:

問題は、システムがデータベース内の列、.edmxファイル内のエンティティ、およびモデルクラスの整合性を検出できず、コントローラークラスでも同じものを使用しているためです。

したがって、これを修正するには、次の手順に従います。

  1. データベースに移動し、すべての列名とプロパティを確認します。
  2. .edmxファイルのクラス図で確認してください。エラーが発生しているクラスを右クリックし、クラスの更新オプションを選択します。ダイアログで[更新]タブを選択し(新しい列が追加されていない場合。新しい列が追加されている場合は、[追加]タブを選択できます)、関連するオブジェクトを選択します。通常、それらはテーブルです。だからそれらを選択して終了します。
  3. 次に、モデルクラスとコントローラークラスの名前を確認します。

これが解決策になるはずです。そうでない場合は、私に知らせてください。

1
Tushar Sharma

SelfTracking Entity T4テンプレートを使用していますか?この問題が発生し、エンティティデザイナでエンティティモデルを変更した後、T4テンプレートがエンティティを再生成していないことがわかりました。 T4テンプレートを右クリックし、[カスタムツールの実行]をクリックして、それが役立つかどうかを確認してください。

0
John Egbert