0

以下に示すように、プロジェクトに app.config ファイルがあります。

接続文字列を読み取る次のコードがあります。

string connectionstring = ConfigurationManager.ConnectionStrings["LibraryReservationSystemEntities"].ConnectionString;

以下にリストされているように例外を示しています。

オブジェクト参照がオブジェクト インスタンスに設定されていません。

どうすれば修正できますか?

注: これはクラス ライブラリプロジェクトです。この接続文字列を、EF の EMDX ファイルを持つ別のプロジェクトからコピーしました。現在のソリューションには 1 つのプロジェクトしかありません。

注:プロジェクトから (EF の) ObjectContextをインスタンス化する必要があります。EMDX は別のプロジェクトで利用できます。

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
<connectionStrings>
    <add name="LibraryReservationSystemEntities" connectionString="metadata=res://*/MyEDMtest.csdl|res://*/MyEDMtest.ssdl|res://*/MyEDMtest.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.;AttachDbFilename=C:\DevTEST\Databases\LibraryReservationSystem.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
 </configuration>

参照

  1. Entity-Framework Code-First の接続文字列をプログラムで設定するにはどうすればよいですか?

  2. エンティティ フレームワーク コンテキストを初期化する最良の方法は?

4

3 に答える 3

1

ライブラリ プロジェクトの構成ファイルを持つことはできません。この構成ファイルは、実行されたアセンブリに関連しています。これは、winform アプリ、WPF アプリ、コンソール アプリ、IIS の ASP.Net Web サイトなどです。

ConnectionStrings実行される実際のアセンブリの app.config (または web.config) ファイルにセクションを追加します。

于 2012-07-18T11:59:04.077 に答える
0

これをチェックして

you need to add a .dll reference for configuration manager

recheck if your connection string is right

check if you have more than one configuration file ex. web.config and app.config; so the ConfigurationManager is referencing the wrong file in the solution.
于 2012-07-18T11:57:00.150 に答える
0

ConnectionStrings["myConnection"] が null を返す場合、それを逆参照して Name プロパティを取得すると、コンストラクターで失敗します。それは間違いなくバグの場所ではありませんか?

その行にブレークポイントを置いて、ConfigurationManager.ConnectionStrings を調べて、それが何を持っていると考えているかを確認し、タイプミスを注意深く確認してください。

その後、メソッドの最初の行にブレークポイントを置き、connectionString の値を確認します。null を SqlConnection コンストラクターに渡しても、実際には例外はスローされませんが、開こうとすると InvalidOperationException が発生します。

于 2012-07-18T12:00:12.423 に答える