前提
EntityFrameworkを使って、データベースファーストのオブジェクトを生成しました。
実行には2つの環境があり、それぞれを開発環境と本番環境と呼称します。
開発環境では、名の通り、新しい機能を実装するためにデータベースのテーブルを新しく作ったり変更したり、また検証のために本番環境からデータベースをコピーしたりしてデバッグなども行っています。
本番環境では、開発環境から段階的に機能を取り入れていきます。
つまり、新規機能の開発やテストは「開発環境」のDBにアクセスし、システムの運用自体は「本番環境」のDBにアクセスするということになります。
思いついたやり方として、1つのプロジェクト内に、開発環境と本番環境のDBオブジェクトを別名のedmxとして作成し、App.config内の接続文字列の定義を変更してDBのアクセス先を切り替えるというものでした。
以下はテスト環境に接続するときのApp.Configの状態です。
<connectionStrings> <!-- テスト環境 --> <add name="FooEntities" connectionString="metadata=res://*/○○○○DevDB.csdl(以下略)" providerName="System.Data.EntityClient" /> <!-- 本番環境 --> <!-- <add name="FooEntities" connectionString="metadata=res://*/○○○○DB.csdl(以下略)" providerName="System.Data.EntityClient" /> --> </connectionStrings>
困っていること
稚拙ながら、上記のようなやり方しか思いつかず、このやり方で運用すると主に次の問題点があります。
- DB接続先を切り替えるたびにApp.Configの内容を変更する必要がある
- モデルを更新するときに毎回本来のモデル名と同一に名前を変更する必要がある
実現したいこと
AppConfigを自分で書き換えなくとも、構成マネージャからビルドターゲットに連動してDB接続先が変われば、最低限良いのかなと思っています。
しかしながら、本来のSQLServer+Entityframework の運用の仕方としては不完全で、もっと効率の良い使い方があるはずなのですが、これらの運用方法を達成するにはどのようにするのが良いのか。
この両面でご意見をいただければ、またご教授いただければ幸いです。
補足情報(FW/ツールのバージョンなど)
- VisualStudio 2013
- EntityFramework 6.0
回答1件
あなたの回答
tips
プレビュー