Что мне нужно сделать, так это иметь оператор SET IDENTITY_INSERT dbo.myTable ON
, в чем синтаксис использования вышеуказанного оператора в приложении C#?Как установить инструкцию SET IDENTITY_INSERT dbo.myTable ON
ответ
Это точно так же, как и любой другой бит SQL:
using (var connection = new SqlConnection("Connection String here"))
{
connection.Open();
var query = "SET IDENTITY_INSERT dbo.MyTable ON; INSERT INTO dbo.MyTable (IdentityColumn) VALUES (@identityColumnValue); SET IDENTITY_INSERT dbo.MyTable OFF;";
using (var command = new SqlCommand(query, connection)
{
command.Parameters.AddWithValue("@identityColumnValue", 3);
command.ExecuteNonQuery();
}
}
Отсутствие правильной круглой скобки в конце строки «using» –
Ну, если это часть SqlCommand
Например, вы просто добавить его к тексту:
using(SqlConnection myConnection = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SET IDENTITY_INSERT dbo.MyTable ON";
cmd.CommandText += //set the rest of your command here.
}
Я допрашивать необходимость этого, однако. Если вы вставляете личность в таблицу с достаточной частотой, которую используете код, я бы рекомендовал хранимую процедуру для вашей вставки. Вы бы затем вызвать его в основном таким же образом:
using(SqlConnection myConnectino = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "usp_insert_record_into_my_table [ParamList]";
cmd.CommandType = SqlCommandType.StoredProcedure;
}
Aaaaaargh, хранимые процедуры с «usp_» с префиксом, моими глазами, моими глаза, это burrrrrrns! ;) – Rob
@Rob - да, я знаю, старая конвенция. Мне это действительно нравится, потому что его легче найти в студии управления (для меня). Он не служит никакой другой цели. Если вы, возможно, захотите, я могу изменить его. Для тебя. : P – AllenG
Мех - долго, поскольку это не «sp_», см.: Http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/don-t-start-your-procedures-with-sp_ –
Для кого это отмечено как «не реальный вопрос» - пожалуйста, прочитать [SET IDENTITY_INSERT] (http://msdn.microsoft.com/en-us /library/ms188059.aspx). –
@OMG Ponies - Я действительно задавался вопросом, почему у кого-то был «не настоящий вопрос». Это тоже: -/ – Rob