2010-07-30 7 views
9

Was ich tun muss, ist eine SET IDENTITY_INSERT dbo.myTable ON Anweisung, was ist die Syntax der Verwendung der obigen Anweisung in einer C# App?Wie setze ich SET IDENTITY_INSERT dbo.myTable ON-Anweisung

+2

, wem markiert diese als „nicht eine wirkliche Frage“ - bitte die [SET IDENTITY_INSERT] lesen (http://msdn.microsoft.com/en-us /library/ms188059.aspx). –

+0

@OMG Ponys - Ich habe mich gefragt, warum jemand "keine echte Frage" hatte: -/ – Rob

Antwort

19

Es ist genau das gleiche wie jedes andere Bit von 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

fehlende rechte Klammer am Ende von "using" Zeile –

3

Nun, wenn es Teil eines SqlCommand Instanz ist, die Sie gerade fügen Sie den Text:

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

ich die Frage Notwendigkeit davon jedoch. Wenn Sie eine Identität so häufig in eine Tabelle einfügen, dass Sie Code verwenden, würde ich eine gespeicherte Prozedur für die Einfügung empfehlen. Sie würden es dann rufen Sie im Grunde die gleiche Art und Weise:

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, gespeicherte Prozeduren mit "usp_" vorangestellt, meine Augen, meine Augen, es burrrrrrns! ;) – Rob

+0

@Rob - ja, ich weiß, alte Konvention. Ich mag es wirklich, weil es einfacher ist, im Management Studio zu finden (für mich). Es dient keinem anderen Zweck. Wenn Sie _really_ wollen, schätze ich, dass ich es ändern kann. Nur für dich. : P – AllenG

+2

Meh - solange es nicht "sp_" ist, siehe: http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/don-t-start-your-procedures-with-sp_ –