SQL Connection/ Команда надлежащего управления (чтобы избежать таблицы LOCKS)?

Я настраиваю фабрику соединений для проекта.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 ответ

Я верю, что в этом случае сработает "нолок"...

FROM [table] with (nolock)

всякий раз, когда вы делаете прямой запрос.

Другие вопросы по тегам