SqlConnection Singleton

nia*_*iao 4 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

_DBPersistanceSingleton = PersistanceSingleton.Instance;
Run Code Online (Sandbox Code Playgroud)

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

_DBPersistanceSingleton.GetUsers()
Run Code Online (Sandbox Code Playgroud)

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

Meh*_*ari 13

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

  • @niao:我不确定释放连接的超时.如果您担心连接数,可以在连接字符串中设置最大池大小.您也可以通过调用`ClearPool`方法手动清除池.请参阅:http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx (2认同)