c# - 使数据库类静态化?

标签 c# .net sql class static

我目前有一个名为“SqlData”的类,其中包含连接到我的 MS-SQL 数据库所需的所有方法。

它包含用于插入、删除和更新不同类型表格的方法 - 因此在我的 WPF 应用程序的许多 Windows 中使用。

假设我将近 90% 的 WPF-Windows 调用了我的 SqlData 方法中的至少三种方法来加载、插入和更新不同的记录...

目前,我需要在每个窗口中实例化我的 Sql 类 - 因此我正在考虑将整个类设为静态,这样我就不需要每次都实例化它了吗?

但我也读过在与外部服务器(如 Web 服务或数据库)通信时不要使用静态类。

您能给我一些建议吗?

以下是我的类中使用的一些方法(bool 返回 true,当语句完成时,否则返回 false):

公共(public)数据表 GetAllSomething(数据表_数据)

public bool WriteSomething(Object something, out int insertedId)

public bool DeleteSomething(Object something)

谢谢!

最佳答案

At the moment, I need to instantiate my Sql-Class in every Window - therefore I'm thinking of making the entire Class static so I don't need to instantiate it every time?

在 .NET 中实例化一个类所花费的时间是如此 ridiculously low你不应该担心。就我个人而言,我不使用静态类,因为它们在应用程序的不同层之间引入了强耦合,使它们更难以单独进行单元测试。

所以我更喜欢将所有数据库访问抽象为一个接口(interface)(或抽象类),然后针对特定数据库提供该接口(interface)的实现。

关于c# - 使数据库类静态化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387548/

相关文章:

c# - 当项目“"Could not load file or assembly ' Microsoft.Extensions.Logging.Abstractions”时我还能做什么,除了手动清空bin和obj

c# - 阻止 List.Add() 方法

mysql - 如何从 MySQL 中的 FROM 字段中删除子查询

java - 如何在JAVA中查询具有相似数据的两个表并按表字段对结果进行分组?

c# - 在 Visual Studio 2010 中附加到进程是什么意思?

c# - 通过 ref 获取字典

c# - Azure SendGrid 提供的授权无效、已过期或已撤销

c# - COM 技术的当前模拟是什么?

sql - 在 Liquibase 中执行第二次插入时如何引用自动递增的 ID?

c# - 改进任务代码以实现异步等待