2

そこで、ADO.NET チーム ブログのこの指示に従って、小さなテスト プロジェクトを作成してみました。私はすべてを再確認しました。動作していないようで、接続文字列が見つからないと言い続けています。

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

ステップ。1 この UserModels.dll をビルドします。dll、App.Config ファイルで、edmx はこの接続文字列を生成しました: (作成時に「テスト」ボタンを押すと、正常に接続され、「UserDatabase」からすべてのテーブルの edmx ダイアグラムが生成されました)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="UserModelsContainer" connectionString="metadata=res://*/UserModels.csdl|res://*/UserModels.ssdl|res://*/UserModels.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MyDesktop\SQL2008;initial catalog=UserDatabase;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

ステップ 2. 次に、テスト プロジェクトを作成しました。

class UnitTetst1 ....
TestMethod1()....
using (var db = new UserModelsContainer()) {
  int i = db.Users.Count(); // <---expecting '0' for a new db, but I get an exception
}

---------ここで問題 -----------------

ステップ 3. テストを実行します。次に、次のようなエラー InvalidOperationException が表示されます。

"No connection string named 'UserModelsContainer' could be found in the application config file."

DbContext が App.Config から connectionStrings を取得する場所を認識していないようです??

助けてください~~

4

2 に答える 2

7

プログラムを実行するとき、読み取られるのは実行中の .exe ファイルの app.config です。.dll の app.config は使用されません。UserModel.dll は dll であるため、実行する場所に .exe (または Web サイト) が必要です。その exe の app.config に接続文字列を配置します (または、web.config の Web サイトの場合)。

于 2012-05-27T06:36:38.393 に答える
5

「パッケージ マネージャー コンソール」から update-database コマンドを実行しようとしたときに、この問題が発生しました。コードの最初のデータ アクセス レイヤー用に別のプロジェクトを作成し、Web プロジェクト用に別のプロジェクトを作成しました。

次のコマンドを使用していました: 「update-database -projectname MYPROJECTDANAME -CONNECTIONSTRINGNAME CONNECTIONSTRING -Force」

私のMYPROJECTDANAMEプロジェクトを指していましたが、指定したスタートアッププロジェクトから接続文字列名を取ります。したがって、スタートアップ プロジェクトとしてマークしたプロジェクトに、必要な接続文字列があることを確認してください。

于 2013-09-10T18:52:17.520 に答える