【发布时间】:2015-09-17 17:54:34
【问题描述】:
我们的数据库设置有一个管理数据库和多个客户端数据库。当用户登录时(通过管理数据库),我们确定他们应该使用哪个客户端数据库并返回该连接字符串以供将来使用(存储在会话中)。
我真的很喜欢 this answer 处理 EF6 的方式,并希望实现类似的东西,但我不确定如何使用 DI 并更新连接字符串。
使用 DbConnection 直接更新 DbContext 上的连接字符串。它只是通过一些我目前没有看到的 DI 机制干净地创建和更新 DbContext 的能力。
【问题讨论】:
-
不清楚你的问题是什么
-
这取决于您的 dbcontext 是如何构建的,以及您使用的 DI 框架。
-
@Eris 我还没有选择 DI 框架。我现在正在研究 Unity 和 StructureMap。是否有任何 DI 框架比其他框架更优雅地解决它?
-
@Evk 我不想在创建客户端 DbContext 时指定连接字符串。 admin DbContext 很简单,因为它将使用来自 web.config 的连接字符串。不知何故,我想使用 DI 帮助将该用户的连接字符串“注入”到客户端 DbContext 中。
-
如何为 ClientContext 创建一个装饰器类,它注入了 HttpContext container.RegisterType
(new InjectionFactory(c => HttpContext.Current));然后在ClientContext的ctor中,从session中获取连接字符串,更新包含的DbContext?
标签: c# asp.net-mvc entity-framework dependency-injection