LINQ to SQL クラス( DataContext )を使用して DB に接続しています。Development
、Staging
およびという同じスキーマを持つ 3 つのデータベースがありLive
ます。それらが同一のスキーマを持っている場合、DataContext コンストラクターに渡す接続文字列を変更するだけで、同じ DataContext を使用してそれらに接続できることに気付きました。DataContext の作成へのすべての呼び出しがそれを通過するように、インターフェイスを宣言しました。
public interface IDataContextCreator
{
MyDataContext CreateDataContext();
}
Development
これで、Staging
またはLive
DBに接続するために、このインターフェイスの具体的な実装を行うことができます。
DataContext コンストラクターを非表示にして、 DataContextの作成へのすべての呼び出しが上記のインターフェイスを通過するようにします。DataContextのアクセシビリティを に変更するとinternal
、ソリューション内の他のプロジェクトで使用できなくなります。理想的には、クラスのアクセシビリティ修飾子をそのままにしてpublic
、コンストラクターを に変更したいと思いますinternal
。自動生成されたクラスでこれを行う方法はありますか? この問題に対する他の解決策はありますか?
ありがとうございました。
編集:
Jonあなたは正しいコンストラクターを作成する必要がありますinternal
。これらはData Layerにあり、他のプロジェクト/レイヤーのクラスがこれらのコンストラクターに到達することは望ましくありません。ただし、インターフェイスを使用してDataContextを作成し、作成されたDataContextを使用することしかできません。これは、クラス レベルで公開されるためです。