私はEFを使用し、そこから.EDMXを生成しましたが、クラスファイルの自動生成にのみ使用することを望んでいました。
次に、クラスファイルを使用してエンティティモデルを作成し、DBコンテキストを作成してからリポジトリを作成しました。リポジトリにアクセスしてデータを取得するために、WebApi(別のプロジェクトですが同じソリューションにあります)を呼び出しています。 WebApiを実行しているときにエラーが発生しました。
{「アプリケーション構成ファイルで「DBEntities」という名前の接続文字列が見つかりませんでした。」}
しかし、私のDAL内にはwebConfigがあり、次のエントリがあるので、何が間違っているのかよくわかりませんが、
add name="DBEntities" connectionString="metadata=res://*/Models.DBModel.csdl|res://*/Models.DBModel.ssdl|res://*/Models.DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MY-PC;initial catalog=DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient"
「私のDAL内で、webConfigがあります」と言います。接続文字列は、参照されるクラスライブラリの構成ファイルにありますが、エントリプロジェクト(Web APIプロジェクト、タグを見ていると思います)にあるメインの構成ファイルにはありません。
その場合は、エントリプロジェクト構成ファイルに接続文字列をコピーするだけです。
DBContextファイルで、削除します
public RaficaDB()
: base("name=DefaultConnection"){}
に
public RaficaDB()
: base("DefaultConnection"){}
EF 4.3、EF 5、およびEF 6は、name = xxxxxと呼ばれる接続文字列を好まない
ここに答えが見つかりました-> 「MyApplicationEntities」という名前の接続文字列がアプリケーション構成ファイルに見つかりませんでした
接続文字列をWEBAPIプロジェクトのweb.configファイルにコピーして貼り付けると、問題が解決します。
.edmxファイルが存在する同じプロジェクトの.configファイルの構成セクションに次のセクションを挿入します。
また、メインプロジェクトの.configファイルに異なる環境用の異なる接続文字列を作成し、DBContextのコンストラクターのパラメーターとして任意の接続文字列を渡すこともできます。
<connectionStrings>
<add name="DBEntities" connectionString="metadata=res://*/Models.DBModel.csdl|res://*/Models.DBModel.ssdl|res://*/Models.DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MY-PC;initial catalog=DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
私はこれがうまくいくことがわかりました:
1)複数の「App.config」ファイルがあるかどうかを確認します。 2)使用する接続文字列よりも名前が間違っているかどうかを確認します。 3)プロジェクトを保存してプログラムを実行する
これで動作するはずです。
最も簡単な解決策:
App.configで現在のedmxファイルと関連する接続文字列を削除し、以前と同じ名前のEdmxアイテムを再度追加します。
これは私のために働いた。
馬鹿げていますが、このエラーはRebuild All
!!で修正されました。
同様に電源をオフにしてからオンにすることもできます。