与在读取连接字符串中使用的方法相比,您在ASP.NET MVC中从Global.asax.cs 类中注入数据库连接字符串的好处吗?从访问app.config文件的BaseDataProvider类?从app.config注入连接字符串vs从BaseDataProvider类读取
2
A
回答
3
我宁愿使用构造函数注入(尽可能)注入任何需要的对象。
我看到的一个小优点是关于类的依赖关系的透明度。
例如,如果你试图实例化一个测试工具类(同时做集成测试):在第一种情况下(构造函数注入),您可以立即看到,它需要一个连接字符串,并提供
- 一个在你实例化类(也许使用一个默认的构造函数)第二种情况
- 和一些审判后&错误发现,这取决于
ConnectionString
属性被设置
更新: 构造注射方法的另一个优点是,它解耦类本身获得从app.config中的连接字符串的机制。
这可能会在未来的情景,你甚至不想想现在启用。
例如,在一个项目中,我目前我的工作有一个具有数据库访问组件,我已经在若干情况下重复使用它。在其中一些中,它使用来自配置文件的标准连接字符串,而在另一些中,我有另一个组件根据某些条件决定使用哪个连接字符串。
如果你去的第二个方法,你需要改变,以支持这种功能的代码。
+0
+1我也会采取注射策略。不要隐藏你的依赖,否则他们迟早会咬你的。 –
0
我通常采取一种混合方法,以便我的BaseDataProvider类具有一个空构造函数,该构造函数默认存储在配置中的任何内容,但在需要默认连接以外的情况下被覆盖以接受connString。
然后我的Global.asax类包含必要的逻辑,以确定他们可能需要在特定情况下哪些连接字符串。例如,假设您的Web应用程序已在全球各地的服务器上部署,则您需要连接到最近的可用数据库服务器以避免延迟问题。因此,对用户登录,我就揣摩出我的用户是再设置它们与相应的连接
相关问题
- 1. 如何从C#中的App.config文件读取连接字符串
- 2. 连接字符串不从项目中的App.config中读取
- 3. 从web.config读取连接字符串
- 4. Clickonce app.config连接字符串
- 5. App.Config中连接字符串
- 6. 如何从类lib的App.config中使用连接字符串?
- 7. 从app.config中抓取动态更新连接字符串在VB.Net
- 8. 无法从app.config获取连接字符串
- 9. 连接字符串注入
- 10. 从我的DataAccess库项目中的app.config读取连接字符串,用于dbContext
- 11. 使用NUnit时从App.Config读取连接字符串的问题2.5.2
- 12. 从Azure网站连接字符串配置中读取连接字符串
- 13. 从字符输入连接字符串
- 14. 从类库中读取连接字符串
- 15. 如何从另一个类库项目中的app.config获取连接字符串?
- 16. 从套接字读取到字符串
- 17. Bash连接少于符号从文件读取的字符串
- 18. 代码中的连接字符串vs app.config文件
- 19. 如何使用连接字符串从web.config在asp.net中的app.config
- 20. 将连接字符串从app.config移动到C#代码#
- 21. 永久更改app.config中的连接字符串从代码
- 22. 使用app.config文件连接字符串,并从用户抽象
- 23. 连接字符串已从Web.Config而不是App.Config加载
- 24. 从app.config中检索mysql连接字符串?
- 25. C#ConfigurationManager从app.config中检索错误的连接字符串
- 26. 从app.config读取值
- 27. 从串口读取字符串从Arduino
- 28. 在app.config中加密连接字符串
- 29. 解密连接字符串中的App.config
- 30. App.config连接字符串相对路径
如果在注入MVC的零件(如控制器)的连接字符串你显然违反了单一职责原则。这将导致难以测试,难以维护代码。如果您要将连接字符串注入Controller,这意味着控制器直接查询数据库,而不是Controller的工作。这是存储库或工作单元的工作。控制器应该依赖于那些为数据库做些什么的东西。 – Steven