我目前正在使用名为“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)
谢谢!
答案 0 :(得分:5)
目前,我需要在每个窗口中实例化我的Sql-Class - 因此,我正在考虑使整个类静态,所以我不这样做 需要每次实例化吗?
在.NET中实例化一个类所花费的时间是ridiculously low,你不应该担心。就个人而言,我不使用静态类,因为它们在应用程序的不同层之间引入了强耦合,使得单独进行单元测试变得更加困难。
所以我更喜欢抽象接口(或抽象类)背后的所有数据库访问,然后针对特定数据库提供此接口的实现。
答案 1 :(得分:0)
只是不要这样做,每次需要时都可以创建一个类的实例,这没有什么不妥。
即使您现在还没有这样做,您可以想象将来很快会使用某种依赖注入,或者您可以使用.NET中提供的任何测试框架编写单元测试,并且通常您会有很多没有静态类的更多选项。
答案 2 :(得分:0)
我总是在我的应用程序的开头创建一个数据库对象,并使用所有需要它的窗口和类的构造函数传递它。它使我能够向它添加数据,比如一个连接字符串,这只是在开始时才需要的,并且在建立数据库连接之前没有机会调用方法(因为可以使用静态),因为这是在构造函数。