使数据库级静态?

时间:2011-09-12 12:05:37

标签: c# .net sql class static

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

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

假设我的WPF-Windows中有近90%正在调用至少三种用于加载,插入和更新不同记录的SqlData方法...

目前,我需要在每个Window中实例化我的Sql-Class - 因此我正在考虑使整个Class保持静态,所以我不需要每次都实例化它?

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

你能否就我应该如何继续提出任何建议?

在我的类中使用了几个方法(bool返回true,语句完成时,否则为false):

public DataTable GetAllSomething(DataTable _data)

public bool WriteSomething(Object something,out int insertedId)

public bool DeleteSomething(Object something)

谢谢!

3 个答案:

答案 0 :(得分:5)

  

目前,我需要在每个窗口中实例化我的Sql-Class -   因此,我正在考虑使整个类静态,所以我不这样做   需要每次实例化吗?

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

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

答案 1 :(得分:0)

只是不要这样做,每次需要时都可以创建一个类的实例,这没有什么不妥。

即使您现在还没有这样做,您可以想象将来很快会使用某种依赖注入,或者您可以使用.NET中提供的任何测试框架编写单元测试,并且通常您会有很多没有静态类的更多选项。

答案 2 :(得分:0)

我总是在我的应用程序的开头创建一个数据库对象,并使用所有需要它的窗口和类的构造函数传递它。它使我能够向它添加数据,比如一个连接字符串,这只是在开始时才需要的,并且在建立数据库连接之前没有机会调用方法(因为可以使用静态),因为这是在构造函数。