Как поставить инструкцию SET IDENTITY_INSERT dbo.myTable ON - PullRequest
11 голосов
/ 30 июля 2010

Что мне нужно сделать, это иметь оператор SET IDENTITY_INSERT dbo.myTable ON, каков синтаксис использования этого оператора в приложении c #?

Ответы [ 2 ]

20 голосов
/ 30 июля 2010

Это так же, как любой другой бит 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();
    }
}
3 голосов
/ 30 июля 2010

Ну, если это часть экземпляра 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;
}
...