SqlConnection Singleton

时间:2010-03-04 19:10:59

标签: singleton sqlconnection

问候,我想问一下,创建Singleton是否只有一个与db的活动连接是个好主意。我想做的是: 1)我有一个wcf服务 2)wcf服务从db获取数据 3)我想创建一个这样的单例,只有一个与db的连接:

private static PersistanceSingleton _Instance;
    public static PersistanceSingleton Instance
    {
        get
        {
            if (_Instance == null)
            {
                _Instance = new PersistanceSingleton();
            }
            return _Instance;
        }
    }

我知道这不是一个理想的单身人士,但我只是为了这个后期目的写了它。 我想在这里有一些持久性存储库,我将在构造函数中实例化它们。 在我的服务类中,我将在构造函数

中包含以下代码
_DBPersistanceSingleton = PersistanceSingleton.Instance;

然后当某个请求到来时(例如GetUsersRequest)我想做类似的事情:

_DBPersistanceSingleton.GetUsers()

在执行每次db调用之前,我还将检查SqlConnection是否打开。 如果这是一个很好的做法,请告诉我。我考虑这个解决方案的原因是因为大量用户将通过客户端应用程序连接到该服务

3 个答案:

答案 0 :(得分:13)

像这样重用SqlConnection不是一个好习惯。在需要时打开它,并在完成后立即关闭它。连接池将在重复使用连接的情况下为您工作。

答案 1 :(得分:3)

不,我强烈建议你不要。如果多个请求同时进入会发生什么?他们不能同时使用相同的连接,最好只是引入一个巨大的瓶颈。

连接池会自动为您处理,让您不必担心,因此您无需担心。只需根据需要打开和关闭连接。

答案 2 :(得分:1)

将sql连接放在一边......

这个单例模式不是线程安全的,在多线程应用程序中使用是个坏主意(因为你的WCF服务很可能)。

使用此代码,如果多个并发请求到达,则可能会创建多个实例。