カテゴリー
Microsoft

【MVC 5】DB 接続文字列だけ別ファイルに切り出す方法

ポイント

  • プロジェクト直下のフォルダに Web.config がある。同じプロジェクト直下フォルダに接続文字列を定義したファイルを置く。例えばファイル名は connections.config
  • connections.confg には < connectionStrings> の内容をそのまま書く。
  • Web.config では、connectionStrings に configSource 属性のみを書き、その値に connections.config を指定する。

具体例

<configuration>
  <connectionStrings configSource="connections.config" />
... 略 ...
<connectionStrings>
  <add name="WebApplication1Context" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=WebApplication1Context-20160410153536; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|WebApplication1Context-20160410153536.mdf"
    providerName="System.Data.SqlClient" />
</connectionStrings>

ダメだった試み

構成にエラーがあります。

説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。

パーサー エラー メッセージ: configSource 属性は無効です。: configSource ‘..\connections.config’ は無効です。それは、構成ファイルと同じディレクトリまたはサブディレクトリ内のファイルを参照しなければなりません。

ソリューションフォルダに connections.config を置き、

<configuration>
  <connectionStrings configSource="..\connections.config" />
... 略 ...

と指定したところ上記のエラーとなりました><。

ソリューションに含まれるすべてのプロジェクトの接続文字列を統一しようと思ったのですけれども、このような指定方法はできないようですの><。

注意!


Microsoft Visual Studio

エラー

選択したコードジェネレータを実行中にエラーが発生しました:

‘呼び出しのターゲットが例外をスローしました。’

OK

右クリック > 追加 コントローラー… > MVC 5 Controller with veiws, using Entity Framework、の操作によりスキャフォールディングすることができます。

ところが今回のように接続文字列を分けた状態ですと、上記エラーとなってしまいました><。

スキャフォールディングしたい場合は、connectionString を別ファイルに分ないようにいたします。

おわりに

次のページが参考になりました。ありがとう存じます♪

以上です。

コメントを残す