Entity Framework でスキーマ名を切り替えたいんですけど

Entity Framework で、設定ファイルの変更などでビルド後に接続先スキーマを切り替えたいと思ったけど無理だったという話。ソースは俺なのでもしかしたらいい方法があるのかもしれない。あったらぜひぜひ教えていただきたい。泣きそうです。

環境は以下。

  • Visual Studio 2010
  • Oracle11g
  • ASP.NET MVC3
  • Entity Framework 4.3.1

とりあえず切り替え自体は以下の手順でできる。

  1. edmx ファイルにスキーマ名が埋め込まれてるので、おもむろにエディターかなんかで全置換して保存*1
  2. Visual Studioマッピングエラーが出まくったりするので、再起動
  3. Web.config の接続文字列を変更
  4. ビルド
  5. 実行

ビルドしなきゃならないのが痛い。というか最終的に edmx ファイルは dll に埋め込まれるっぽい*2ので、ビルド後に変更することができない。なんのための接続文字列なのか・・。

以前 .NET で DataSet 触った時、クエリビルダーが生成する SQL に自動的にスキーマ名が埋め込まれてて、「これじゃスキーマの切り替えできやんがな」と憤慨したものだが、それよりは現実的に変更可能なだけまし・・か・・。

なんなんだろう、 .NET 開発者の人はスキーマ名切り替えたいとか思わないんだろうか。スキーマ名固定だといちいちインスタンス作らなきゃいけなくて不便じゃない?それとも根本的になにか俺が間違ってるんだろうか。ここまで頑なにスキーマ名固定だと俺がおかしい気もしてくる。

ああわからない。謎。

2012/06/25 追記

edmx ファイルのプロパティ確認したら「メタデータ成果物の処理」という項目があった。これを「出力ディレクトリにコピー」にすると外部化できるかもしれない。要確認。

*1:こんなことしなくても「データベースからモデルを更新」で接続先を変更すればいけるかも。てか多分そっちが正しい。

*2:ビルド成果物には見当たらない