マルチテナント (テナントごとのデータベース) アプリケーションを構築しています。
- アプリケーション - .net MVC4
- データ層エンティティ フレームワーク コードの最初のリポジトリ
- リポジトリは、構造マップを介してアプリケーションに注入されます
構造マップ構成:
var connectionString = ConfigurationManager.ConnectionStrings["AccessControlDB"].ToString();
ObjectFactory.Initialize(x =>
{
x.For<IAccessControlContext>().Use<AccessControlContext>().Ctor<string>("connectionString").Is(connectionString);
x.For<IGenericRepository<Identities>>().Use<GenericRepository<IAccessControlContext, Identities>>();
x.Scan(scan =>
{
scan.AssembliesFromApplicationBaseDirectory();
scan.ExcludeNamespace("StructureMap");
scan.WithDefaultConventions();
});
});
各テナントをデータベースで分離するという新しい要件が発生したため、tenantID を持つだけでは十分ではなくなりました。
接続文字列を構築するために必要なデータを格納するためのメタ データベースを用意することはできましたが、接続文字列をリポジトリに渡す方法がわかりません。
最初は、接続文字列をプロパティとして公開するだけでよいと思っていましたが、構造マップによってコンテキストが既にインスタンス化された後に接続文字列を変更する方法はありません。