使所有DAL方法都是静态的

时间:2014-05-31 05:05:40

标签: c# .net static ado.net data-access-layer

在我的win表单应用程序中,我有一个名为DataServices的服务类,它为CRUD操作提供了所有其他客户端类(大约12个类)的数据库访问服务。 (我使用的是ADO.net)。这个类有很多公共方法。以下是此类实现的接口的一部分。

interface IDataService
    {
        BankAccount GetByACNo(string acNo);
        bool InsertAccount(IBankAccount ba);
        bool UpdateAccount(IBankAccount ba);

        bool InsertClient(IClient newClient);
        Client GetClientByCID(int CID);
        Client GetClientByName(string clientName);
        void UpdateClient(IClient changedClient);
        DataTable LoadClientNamesAndCID();

        DataTable LoadPointNamesAndPID();
        bool InsertPoint(IPoint newPoint);
        Point GetPointByPID(string id);
        bool UpdatePoint(IPoint point);
        Point GetPointByName(string id);
        List<string> GetPIDs(string firstLetterOfPointName);

        // other methods...
    }

由于这些方法没有使用任何实例变量,所以最好是制作所有方法static吗?

1 个答案:

答案 0 :(得分:1)

来自MSDN http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

&#34;静态类和类成员用于创建数据和 可以在不创建类实例的情况下访问的函数。  静态类成员可用于分隔独立于任何对象标识的数据和行为: 无论对象发生什么,数据和功能都不会改变。 当类中没有依赖于对象标识的数据或行为时,可以使用静态类。&#34;

问题

1)这取决于你如何真正调用你的方法, 如果您没有任何理由创建类的实例,则可以使用静态方法。 这种方法没有错。

2)如果正确设置了静态方法,则不成问题。  每个用户,无论方法是否为静态,都会对基础数据源(XML,DB等)产生相同的影响

虽然一般设计有所不同 - 静态方法几乎总是线程安全的(即你应该让它们成为线程安全的)  实例方法通常不必(尽管你应该记录你班级的线程安全性)。

希望这会有所帮助