我正在构建一个多租户(每个租户 db)应用程序。
- 应用程序 - .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();
});
});
提出了让每个租户通过数据库隔离的新要求,因此拥有租户 ID 已不再足够。
我已经有了一个元数据库来存储构建连接字符串所需的数据,但是我不知道如何将连接字符串传递到存储库。
起初,我以为我可以将连接字符串作为属性公开,但是在上下文已经被结构映射实例化之后,就无法更改连接字符串。