您是否看到从Global.asax.cs注入数据库连接字符串有任何好处 ASP.NET MVC中的类与从访问app.config文件的BaseDataProvider类读取连接字符串的方法相比较?
答案 0 :(得分:3)
我更愿意使用构造函数注入注入任何所需的对象(尽可能)。
我看到的一个小优势是关于类的依赖性的透明度。
例如,如果您尝试在测试工具中实例化一个类(在进行集成测试时):
ConnectionString
属性<强>更新强> 构造函数注入方法的另一个优点是它将类本身与从app.config获取连接字符串的机制分离。
这可以在未来的情景中实现,您现在甚至都没有考虑过。
例如,在我目前正在处理的项目中,我有一个具有db访问权限的组件,并且我已在多个上下文中重用它。在其中一些中,它使用来自配置文件的标准连接字符串,而在其他组件中,我有另一个组件根据某些条件决定使用哪个连接字符串。
如果您采用第二种方法,则需要更改代码才能支持此类功能。
答案 1 :(得分:0)
我通常采用混合方法,使得我的BaseDataProvider类有一个空的构造函数,默认为存储在配置中的任何内容,但是在我需要非默认连接的情况下,它被覆盖以接受connString。
然后我的Global.asax类包含必要的逻辑,以确定在给定情况下他们可能需要的连接字符串。例如,假设您的Web应用程序已在全球各地的服务器上部署,您需要连接到最近的可用数据库服务器以避免延迟问题。因此,在用户登录时,我会找出我的用户所在的位置,然后使用适当的连接进行设置