SQL连接/命令正确管理(避免表LOCKS)?

时间:2014-06-11 17:24:01

标签: c# sql .net table-lock

我正在为.NET项目设置连接工厂,我想问一下它的最佳方法是什么。 我有一个问题,以前的Log类无法正确写入日志,因为表LOCKS(或者他们说),所以我的任务是设置一个新的数据层(希望)解决这个问题。其他小问题。

目前,代码:

public sealed class ConnectionFactory
{
    //Will be SQL only
    private static SqlConnection sqlConnection = null;
    private static string connectionString = ConfigurationManager.ConnectionStrings["Development"].ConnectionString;

    public static SqlConnection GetConnection()
    {
        if(sqlConnection == null)
        {
            sqlConnection = new SqlConnection();
            sqlConnection.Open();
        }
        return sqlConnection;
    }
}

我将主要使用程序,但可能有一个或另一个奇怪的请求,如果需要我们会输入查询,所以我认为我必须以某种方式添加SqlCommand:

private static SqlCommand sqlCommand = null;

public static SqlCommand GetCommand()
{
    //Check if sqlConnection is not null (omitted)
    if(sqlCommand == null)
    {
        sqlCommand = sqlConnection.CreateCommand();
    }
    return sqlCommand;
}

但是,这个命令应该是静态的吗?或者我应该在每次执行新查询时创建一个新的? 考虑到主要是避免锁定,是否可能是由于有多个命令或只有多个连接?如何正确避免和处理?

1 个答案:

答案 0 :(得分:0)

我相信一个" nolock"在这种情况下会起作用......

FROM [table] with (nolock)

无论何时进行直接查询。