modest violet

読者です 読者をやめる 読者になる 読者になる

modest violet

開発者としてのあれこれや、日々の雑記など

your future hasn't written yet. no one's has.
by Emmett Lathrop "Doc" Brown

ConnectionStringsを複数プロジェクトで共有する

今更というか、長年凄い勘違いをしていた事に気づいてしまいました。今までの開発ではずっと、メインプロジェクトとデータアクセス用のプロジェクトを分けた環境で開発をしていました。この際のアーキテクチャは自分ではなかったのであまり細かい点までは気にしていなかったのです。ただ、流石に.NET2003の頃の考え方なので、モダンなスタイルというのも勉強してみました。
単純にMainからデータアクセス用のDataModelsを参照するソリューションです。
f:id:shin21sk:20160220184328p:plain


何もしなくて良かった

元々のアーキテクトがデータアクセス用のプロジェクトで接続文字列に対して処理を行うクラスがあったので、てっきりこのクラスがメイン側のApp.configなりWeb.configなりを参照しに行って、値を加工しているんだとばかり思っていました。さっぱりその方法が分からなくっていつも疑問に思っていたんです。ただ、この部分が完全に勘違いでした。

f:id:shin21sk:20160220184324p:plain
何もしなくて良かったんですね。厳密に言うと、参照元(メインプロジェクト)のconfigファイルに記載されていた値が使用されているだけだったようです。
f:id:shin21sk:20160220184332p:plain

当たり前なんでしょうが。。。

多分、多くの方は「何を今更・・・」と思われるかもしれません。ただ、あまりにも前提部分が不変なものだった為、「値を取りにいっているんではなく、参照元の値を渡している」という発想には長年至らなかったのです。あまりの勘違いに、事実に気づいた後しばし放心してしまいました。「なんだよ、こんな単純な事だったのかよ・・・」と。通りで今までどうやって接続文字列を取得しにいっているのか方法を探したり、Google先生に尋ねたりしたけれども分からないわけです。「そんな所に疑問なんて抱かない」レベルの問題でした。。。

何もしなくていい訳ではない

個人的な感想は「何もしなくていい」と記載しましたが、あくまでのロジック的な要素で何もしなくていいという事です。厳密には、Main側にもApp.configを用意して接続文字列を準備しないといけません。
ああ、それにしてもこんな単純な事だったのか。。。やはり勉強不足だ。。。もっと色々と頑張らないと。。。