私は、(おそらく不必要に) いくつかのレベルで階層化されたアプリケーションを作成しました。1 つは UI で、もう 1 つは Windows サービスです。両方とも、共有プロジェクトでアプリケーションを駆動する実際のコードを持っています (そのため、アプリの実行方法を更新するときに、UI とサービスの両方でコードを更新する必要はありません)。共有されたオペレーティング コードに加えて、共有プロジェクトには基本クラスと、追加、スヌーズ、すぐに実行できる他のプラグイン モジュール (クラス プロジェクト) の API を定義するインターフェイスも含まれています。UI/サービスが行うことはすべて、各プラグインを実行するように指示し、各プラグインが生成した結果を電子メールで送信します。
共有プロジェクトのメイン データ モデルに加えて、これらのプラグイン プロジェクト内で個別のデータ モデルを生成できるようにしたいと考えています。これは、プラグイン用の新しいテーブルを追加するたびにサービスを再インストールする必要がないようにするためです。データ モデルをプラグイン内に保持することで、プラグインを更新するだけで、サービスまたは UI を実行したままにすることができます。「指定された名前付き接続が構成で見つからないか、EntityClient プロバイダーでの使用を意図していないか、無効です。」という問題を解決できません。エラー。プラグインの接続文字列を app.config ファイルから共有プロジェクトの app.config ファイルと UI の app.config ファイルに既にコピーしました。.edmx ファイルをプラグインから共有プロジェクトと UI プロジェクトにコピーしました。それでも私は まだこのエラーが発生しています。接続文字列で参照されている .csdl、ssdl、および .msl ファイルと関係があるかどうか疑問に思っています (例:res://*/ATS.csdl
)。.edmx ファイルがある 3 つのプロジェクトすべてのディレクトリにこれらのファイルが表示され\obj\Debug\edmxResourcesToEmbed
ますが、コピーすることがわかっているすべての情報がどこにでもコピーできるにもかかわらず、プラグインを使用してデータベースに接続できません。 . 何か案は?
ETA : app.config ファイルから接続文字列を逐語的にコピーし、新しいエンティティ オブジェクトを作成するときにそれを指定すると、接続が正常に作成され、データベースにクエリを実行できることがわかりました。そのため、一部の app.config には接続文字列がありませんが、必要なすべてのものには接続文字列が含まれているようです。
ETA 2 : シンボルのデバッグをオンにして、System.Data.EntityClient.EntityConnection
失敗している正確な部分を掘り下げました。ConfigurationManager.ConnectionStrings
コレクションを見ていますが、_items
メンバー (ファイルにリストされているすべての接続文字列を含むと予想されるapp.config
) には、SQLEXPRESS データベースの "LocalSqlServer" エントリのみが含まれています。もちろん、指定した名前で接続文字列を見つけようとすると、読み取っている構成ファイルにそれが含まれていないため、できません。これを正しく機能させる方法をまだ探しています...