SqlClient CommandType - свойствоNemiro.Data.dll
Тип команды, указанной в свойстве CommandText. Значение по умолчанию Auto, если иное не указано в параметре NeData:Sql:CommandType файла конфигурации.

Пространство имён: Nemiro.Data.Sql
Сборка: Nemiro.Data (в Nemiro.Data.dll) Версия: 2.11.4.126 (2.11.4.126)
Синтаксис

public TypeCommand CommandType { get; set; }

Значение свойства

Тип: TypeCommand
Значение по умолчанию Auto, если иное не указано в параметре NeData:Sql:CommandType файла конфигурации.
Заметки

Данное свойство является калькой с одноименного свойства класса SqlCommand. Однако, в текущей реализации, помимо значений StoredProcedure, TableDirect, Text, это свойство может принимать еще одно дополнительное значение - Auto (используется по умолчанию).

Свойство CommandType работает совместно с CommandText. В свойстве CommandText можно указать текст SQL-запроса, либо имя хранимой процедуры. Чтобы запрос был правильно интерпретирован, необходимо указывать CommandType, по крайней мере в случае с классом SqlCommand.

В классе SqlClient, при типе команды Auto, система пытается автоматически определить, что указано в CommandText: обычный SQL-запрос (Text) или хранимая процедура (StoredProcedure).

Эта операция не требует больших затрат времени. Система проверяет значение CommandText по следующему примитивному шаблону:

(SELECT(.+?)FROM)|(DELETE(\s+)FROM)|(UPDATE(.+?)SET)|(INSERT(\s+)INTO)

Если CommandText совпадает с этим шаблоном, то система считает, что это Text.

Если проверка по шаблону даст отрицательный результат, то система проверяет запрос на пробелы (включая переводы строк). Если пробелы есть, то CommandText интерпретируется как Text.

В остальных случаях, CommandText будет восприниматься в качестве StoredProcedure.

Примеры

В следующем примере явно устанавливается тип команды StoredProcedure, чтобы запрос выполнялся как хранимая процедура. В свойстве CommandText указано имя хранимой процедуры MyProcedure. Запрос выполняется методом ExecuteNonQuery  (без возврата результатов).

using (SqlClient client = new SqlClient())
{
  client.CommandType = TypeCommand.StoredProcedure;
  client.CommandText = "MyProcedure";
  client.ExecuteNonQuery();
}
См. также