1

次のエラーが発生します。

指定された名前付き接続が構成に見つからないか、EntityClientプロバイダーでの使用を目的としていないか、無効です。

初めてのEFプロジェクトを作成しました。これはMVCアプリであり、MVCプロジェクトにエンティティモデルを追加しました。また、DataAccessクラスとNUnitを使用してテストを実行するためのクラスを追加しました。最終的に、DataAccessクラスを参照するサービスクラスを追加します。したがって、コードは現在次のようになっています(EFがそのことを実行していることを証明するためにテストを機能させようとしています):

  • テキストフィクスチャはDataAccessクラスを呼び出します
  • DataAccessクラスはEntityFrameworkを呼び出します
  • EntityFrameworkはローカルデータベースにアクセスします

とりあえず、1つのテーブルからすべての行/1列を返そうとしています。これらのファイルはすべて1つのプロジェクトに含まれていることを忘れないでください。この問題は複数のプロジェクトがあることに起因することをよく読みましたが、私の場合は当てはまらないようです。「メイン」のweb.configファイルをチェックインしました。接続文字列は問題ないようです。同じ構成セクション(つまり、connectionStrings)もデバッグ固有の構成ファイルにコピーしましたが、違いはありませんでした。このエラーが表示される理由はありますか?

ありがとう、ジェイ

ソリューションツリーのスナップショット

接続文字列:

これは、エンティティアクセスファイルを作成するときのダイアログボックスからの接続文字列です(データソースは両方の文字列のピリオドです[つまり、ローカルホスト])。

Metadata = res:// /EntityDataModel.csdl | res:// /EntityDataModel.ssdl | res://*/EntityDataModel.msl;provider=System.Data.SqlClient ;provider connection string = "Data Source = .; Initial Catalog = URIntake; Integrated Security = True "

これは、web.configファイルからの接続文字列です。すべての実用的な目的で、それらは同じように見えます。

metadata = res:// /EntityDataModel.csdl | res:// /EntityDataModel.ssdl | res:// * / EntityDataModel.msl;provider = System.Data.SqlClient;providerconnectionstring ="データソース=.;初期カタログ=URIntake;統合されたセキュリティ=True;multipleactiveresultsets= True; App = EntityFramework "

4

1 に答える 1

1

Microsoft Zlatko Michailovは、次のように述べています。

app.configは、exeがあるバイナリディレクトリにありません。次のことを行ってください。

  1. 期待されるコンテンツを含むapp.configが、exeがコンパイルされているディレクトリにあることを視覚的に確認します。(プロジェクトのルートディレクトリに存在するだけでは不十分です。)

  2. アプリ内からSystem.Configuration.ConfigurationManagerを使用して、exeが使用しているapp.configのコンテンツを調べます。

接続文字列の内容も調べていますが、マルチプロジェクト環境では機能しない可能性があります(各プロジェクトでEDMを複製していない場合)。

その理由は「。」です。exeのロード元のディレクトリに解決されます。同じEDMを再利用する場合は、少なくともパスに数ステップ戻ってから、EDMがあるプロジェクト(「...... \ Proj1 \ AdventureWorksModel」など)に移動する必要があります。

さらに、|DataDirectory|の使用を検討することもできます。マクロ-AppDomainをロードするときに、|DataDirectory|を設定できます。EDMが存在する正確なディレクトリをポイントし、それを接続文字列で使用します(例:「| DataDirectory | \ AdventureWorksModel」)。

ASP.NETプロジェクトで作業している場合は、プロジェクトルートを指す「〜」を使用できます。後者の場合、プロジェクトの階層外のモデルを参照することはできません。

詳細については、こちらを確認してください

更新1:

ここでは、以下の手順を試すことができます

  1. 以下のようにweb.configファイルの接続文字列の内容をクリアします

    ここに画像の説明を入力してください

  2. 次に、プロジェクトから*.edmxファイルを削除します

  3. 以下のように再作成します(サンプル1) 。「web.configのエンティティ接続設定を次のように保存する」にチェックマークを付けることを忘れないでください。

ここに画像の説明を入力してください

最後のステップ:その後、web.configファイルに移動し、接続文字列が上記の手順の「エンティティ接続文字列:」に表示されたものとまったく同じかどうかを確認します(画像の上の赤いマークに表示しました)。

これがお役に立てば幸いです。

于 2012-12-25T10:10:23.087 に答える