EFプロジェクトにリポジトリパターンを使用しようとしています。ユーザーは、ログオンする3つの別個の(ただし構造的に同一の)データベースから1つを選択できます(トレーニング用に1つ、テスト用に1つ、本番用に1つあります)。
現在、EF 4実装を使用しており、ADO.NetEntityObjectGeneratorを介してT4を生成しています。リポジトリの基本クラスは次のようになります。
public class RepositoryBase<C> : IDisposable
where C : ObjectContext, new()
{
private C _DataContext;
public virtual C DataContext
{
get
{
if (_DataContext == null)
{
_DataContext = new C();
}
return _DataContext;
}
}
//other code cut for brevity...
}
私たちが望んでいるのは、「_ DataConext = newC();」を変更する機能だと思います。実行時に生成される接続文字列を使用して適切なデータベースを指すことができるようにするための行。残念ながら、次のように接続文字列を渡します。_DataConext = new C(connectionString); は許可されておらず、次のメッセージが表示されます。「型パラメーターで使用される「新規」に引数を渡すことはできません。」
model.ttファイルのコードの背後にあるのは、3つのコンストラクターがあることです。デフォルトのパラメーターなしのコンストラクター、EntityConnectionパラメーターを持つコンストラクター、および接続文字列パラメーターを持つ3番目のコンストラクター(使用するコンストラクター)です。
問題は、これをどのように行うかです。どんな助けでも大歓迎です!