【发布时间】:2016-07-12 00:41:21
【问题描述】:
我有一个应用程序将 Structuremap for DI 用于我的业务和 DAL 层。到目前为止,我一直在处理的每个环境都有一个 DAL。所以我会从配置中获取它并将该值用于我的所有连接。这方面的一个例子是。
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ToString()))
{
//Do a call to db here.
}
我正在使用结构映射调用此方法,如下所示。
ObjectFactory.GetInstance<IDALManager>().MethodName();
现在我有一个新功能,我希望允许用户在开发环境中进行更改,然后按下按钮将其提升到测试或生产环境。因此,我的 DAL 管理器的连接字符串需要能够更改。我还想将所有连接字符串访问保留在 DAL 中,而不是在其他层中。我正在寻找有关如何执行此操作或为此研究什么设计模式的建议。
更新信息 用户将确定需要使用哪个连接字符串。例如,他们会将数据从开发移动到测试,他们将选择源和目标。
string source = \\user selection from combobox.
if (source == "DEV")
{
//Instantiate dev instance of manager
}
if (source == "TEST")
{
//Instantiate Test Instance of manager.
}
【问题讨论】:
-
你在哪里打电话给这个
ObjectFactory.GetInstance<IDALManager>().MethodName();?为什么要保留 DAL 中的所有连接字符串访问权限? -
我在业务层调用那个方法。我想将连接字符串保留在 DAL 中以实现关注点分离。真的这是我第一次使用 DI,我想要一些关于处理多个连接字符串的正确方法的指导。
-
您将如何决定使用哪个连接字符串?你能提供一些伪代码来说明这种决定是如何做出的吗?
-
添加了请求的信息。
标签: c# dependency-injection structuremap