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)
всякий раз, когда вы делаете прямой запрос.