.net - 使用静态方法与数据库交互——有什么潜在问题吗?

标签 .net asp.net-mvc-3 database-abstraction static-class

我正在查看一个处理 MVC3/.Net 应用程序数据库访问的类。

该类是静态的,并为常见的数据库查询提供了很好的便利方法 - 各种复杂的东西,如“GetColumnBValueForColumnA()”,以及更复杂的查询。它针对给定的解决方案和领域进行了很好的分解/优化。

不过,将类视为静态的,触发了一些几乎已被遗忘的内存,即这可能是一个坏主意(也许在多线程的上下文中?),我无法摆脱这种感觉。

让这种类保持静态是个好主意,还是我应该为每次数据库调用实例化它?

最佳答案

Is it a good idea to keep this kind of class static, or should I be instantiating it for each database call?

如果您关心应用程序各层之间的弱耦合、这些层的可重用性、孤立的单元测试等问题,则不应执行上述任何操作。你应该使用抽象。

如果您不关心这些事情,那么静态方法就可以了。使用静态方法时唯一要小心的是将它们设计为 reentrant并且不依赖于任何共享状态以确保线程安全。在所有情况下,请确保通过将它们包装在 using 语句中来正确处置所有 IDisposable 资源,例如数据库连接和命令。

关于.net - 使用静态方法与数据库交互——有什么潜在问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978757/

相关文章:

c# - 函数插值 C#

c# - 如果/当 DllImport 被多次调用时会发生什么?

.net - 服务器修改了 SSL 证书 "Issued by"

sql - 数据库抽象——支持多种语法

.net - 使用[JsonConverter]属性时,我的JsonConverter类中的StackOverflowException

asp.net-mvc-3 - 为什么_ViewStart.cshtml不能访问ViewBag对象?

asp.net-mvc - MVC和Url.Action

asp.net - 如何在mvc3中对来自@Html.LabelFor()的内容进行本地化

php - 计算 Codeigniter 中数据库查询返回的结果数

php共享数据库连接(设计模式帮助)