14

.NET Web API (.NET 4、EF 4) を使用すると、デバッグ時に奇妙なエラーが発生し、実際に何が起こっているのかわかりません。

DocumentRepository私はこのコンストラクターを持っていると言います:

public DocumentRepository(DocPortalContext db)
{
    this._db = db;
}

ポップアップ ウィンドウ内のアイテムをデバッグし、カーソルを_db合わせてドリルダウンすると、次のエラーが表示されます。

System.Data.Entity.Infrastructure.IObjectContextAdapter.ObjectContext = 'System.Data.Entity.DbContext' には 'System' の定義が含まれておらず、タイプ 'System.Data.Entity. DbContext' が見つかりました (using ディレクティブまたはアセンブリ参照がありませんか?)

System.Collections.Generic.ICollection>.IsReadOnly = 'System.Collections.Generic.Dictionary' には 'System' の定義が含まれておらず、タイプ 'System.Collections.Generic.Dictionary' の最初の引数を受け入れる拡張メソッド 'System' もありません

例外はキャッチされていません。

リポジトリ メソッドのこの行にブレーク ポイントを配置し、return _db.Documents.AsQueryable();カーソルを合わせるとDocument、次のエラーが表示されます。

System.Linq.IQueryable.Provider = 'System.Data.Entity.Infrastructure.DbQuery' には 'System' の定義が含まれておらず、タイプ 'System.Data.Entity.Infrastructure' の最初の引数を受け入れる拡張メソッド 'System' もありません。 DbQuery' は f...

いくつかの助けをいただければ幸いです。

追加情報:

次の方法で掘り下げる_dbと、最後に引用されたメッセージが表示されます。

base(System.Data.Entity.DbContext) -> Internal Context -> _appConfig -> 最後に、Default Connection Factory の横に次のエラーがあります。

私のコメントによる詳細情報:

これは実際には質問とは関係ありませんが、.NET または VS のインストールに問題がある可能性があると考えています。その呼び出しを行うためのパイプワークについて十分に知りません。とにかく、WebAPI プロジェクトの URI を参照して、ブラウザーに返される JSON を取得できます。Web サイト プロジェクトで URI を使用しようとすると、ブラウザーにこれが表示Could not find file 'C:\Program Files (x86)\IIS Express\System.Net.Http.StreamContent'.されます。これも例外としてキャッチされます。

4

7 に答える 7

1

ソリューション内のすべてのプロジェクトで、プロジェクトのプロパティに同じ .NET バージョンが設定されていますか? これらのバージョンは、欠落しているクラスについて説明している MSDN のバージョンと一致していますか?

于 2013-10-27T21:12:29.110 に答える
1

このメッセージを何度も見ました。10 回中 9 回は、App.config ファイルに問題がある可能性が高いことを意味します。通常、欠落しているだけです。つまり、エンティティ モデルを参照しているすべてのプロジェクト フォルダーに対して、その中にその App.config ファイルのコピーを配置する必要があります。それらが既に存在する場合は、edmx ファイルと連携する App.config ファイルを削除し、エンティティ モデルを個別に再コンパイルして再生成します。(EDMX ファイルまたは DESIGNER クラスを削除しないでください) 次に、すべての App.config を再度置き換える必要があります。はい、だめです!!!場合によっては、LinqPad もこの問題をチェックするのに最適です。LinqPad で dll ファイルを参照してクエリを実行すると、同じエラー メッセージが表示され、問題が Visual Studio だけではないことがわかります。

これが役に立てば幸いです...頑張ってください!!!!

于 2014-02-10T01:18:29.627 に答える
1

Visual Studio コマンド プロンプトから使用して、グローバル アセンブリ キャッシュにentity-frameworkdll とdll を登録してみてください。sql-servergacutil.exe

于 2013-11-06T10:55:25.557 に答える
1

デフォルトでは、EF 4 は、POCO クラスまたはモデルの最初のクラスから継承するプロキシ クラスをオンザフライで生成します。これが、実行時にこれらのエラーが発生する理由である可能性が最も高いです。奇妙なことに、必要なすべての使用法を含める必要があります。

POCO クラスで System を参照してもよろしいですか (POCO クラスがあると仮定します)。

于 2013-07-18T20:51:48.150 に答える
1

最近、nuget パッケージを含めていくつかのデータ層オブジェクトを作成した小さなサンプル アプリケーションで、この問題に遭遇しました。これが私たちがしたことであり、問​​題を解決しました

  1. .net の一時フォルダがクリーンであることを確認してください。通常、Windows ディレクトリの asp.net 一時ファイルにあります。
  2. ビジュアル スタジオが最新であり、nuget の再インストールによる再起動が不要であることを確認してください。それが解決したか、役に立ったかはわかりませんが、これもチェックして、vsを再起動しました。
  3. プロジェクトをクリーンアップし、dll が存在することを確認します。asp.net シンプル メンバーシップに webmatrix dll を使用している場合は、ローカルにコピーすることを選択していることを確認してください。これは、mvc4 の単純なメンバーシップを使用するためにロールとメンバーのデータをシードしていたときの 1 つの問題でしたが、プロジェクトには当てはまらない場合があります。
  4. また、Web プロジェクトでは、ef の構成が適切なバージョンの ef に対応していることも確認しました。

ソリューションをビルドし、vs 2012 の再起動後に実行すると、正常に機能しました。これらのどれがこの問題の解決に役立ったかは正確にはわかりませんが、4つすべてを実行すると1つのケースで機能しました.

役に立ったら共有しようと思っただけです。

于 2013-12-24T00:48:18.540 に答える
1

これらは、プロジェクトのターゲット .Net バージョンと、参照しているアセンブリのビルド バージョンとの間の非互換性に関連する問題のようです。

この場合、参照しているアセンブリがプロジェクトのターゲット .Net Framework バージョン以下であることを確認する必要があります。

于 2014-01-28T13:47:04.620 に答える