メインアプリケーションとクラスライブラリからEntity Framework接続文字列を取得するのに問題があります。私の主なアプリケーション(* .exe)とクラスライブラリ(Excelで使用するCOM * .dll)の両方をSQL Server CEデータベースまたはSQL Serverデータベースに接続する必要があります。接続文字列:設定ファイルからコードに変換
現時点では、configファイルに2つの 'base'接続文字列を定義しています.1つはSQL Server CE実装用、もう1つはSQL Server実装用です。これは設定ファイル(SQL Server CEまたはSQL Serverのいずれか)から適切な 'ベース'接続文字列を読み込むので、メインアプリケーションで正常に動作し、接続文字列値を調整します(例: 'data source =' for SQL SQL ServerのサーバーCEまたはデータベース名)、私は良いです。ただし、設定ファイルはライブラリを使用しているアプリケーションに依存するので、これは私のクラスライブラリではうまくいきません。したがって、私の設定ファイルの依存関係を完全に取り除きたいのですが、設定ファイルとは対照的に、コード内に接続文字列を定義しています。
次のように現在の設定ファイルの設定はなります
<add name="ConnectionCE" providerName="System.Data.SqlServerCe.4.0" connectionString="" />
<add name="ConnectionServer" providerName="System.Data.SqlClient" connectionString="" />
次のように私は、コンテキストを作成します。
私は「ConnectionCE」と「接続サーバー」の接続文字列を変換するにはどうすればよいvar context = new DbContext("name=ConnectionCE")
//Do things with the context above here, e.g. change the connection string value.
を私は設定ファイルに頼る必要はなく、これらをC#コードで直接(正しいプロバイダで)作成できますか?
ありがとうございます!
プラス1をConnectionStringBuilder – user9993
に言及するためにシンプルで簡単に、ありがとう! –
興味深いことに、これは私の主なアプリケーションでは、var db = new DbContext(@ "DataSource =" C:\ ExistingDBFile.db ")を設定することでうまくいきますが、私のクラスライブラリ内から全く同じコードを呼び出すと私は例外 'System.InvalidOperationExceptionを取得 - 提供されたSqlConnectionは、初期カタログまたはAttachDBFileName'を指定していません。DbContextは、(メインアプリケーションと例外を与えるクラスライブラリとは別の)外部クラスライブラリで定義されているので、メインアプリケーションで動作する場合はExcelクラスライブラリで動作しますか? –