2010-07-30 26 views
9

Lo que tengo que hacer es tener una declaración SET IDENTITY_INSERT dbo.myTable ON, ¿cuál es la sintaxis del uso de la declaración anterior en una aplicación C#?Cómo poner SET IDENTITY_INSERT dbo.myTable ON instrucción

+2

Para quien marcó esto como "no es una cuestión real" - por favor lea la [IDENTITY_INSERT SET] (http://msdn.microsoft.com/en-us /library/ms188059.aspx). –

+0

@OMG Ponies - Me preguntaba por qué alguien no tenía una "verdadera pregunta". También: -/ – Rob

Respuesta

19

Es lo mismo que cualquier otra bits de 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(); 
    } 
} 
+0

falta el paréntesis derecho al final de "usar" la línea –

3

Bueno, si es parte de una instancia SqlCommand, que acaba de añadir al texto:

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. 
} 

pongo en duda el necesidad de esto, sin embargo. Si está insertando una identidad en una tabla con suficiente frecuencia para usar código, recomendaría un procedimiento almacenado para hacer su inserción. A continuación, lo llamaría básicamente de la misma manera:

using(SqlConnection myConnectino = new SqlConnection(connString)) 
{ 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = "usp_insert_record_into_my_table [ParamList]"; 
    cmd.CommandType = SqlCommandType.StoredProcedure; 
} 
+3

Aaaaaargh, procedimientos almacenados con el prefijo "usp_", mis ojos, mi ojos, se burrrrrns! ;) – Rob

+0

@Rob - Sí, lo sé, vieja convención. De hecho, me gusta porque es más fácil de encontrar en el estudio de gestión (para mí). No sirve para otro propósito. Si realmente quieres, creo que puedo cambiarlo. Solo para ti. : P – AllenG

+2

Meh - siempre que no sea "sp_", consulte: http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/don-t-start-your-procedures-with-sp_ –

Cuestiones relacionadas