2010-07-30 10 views
9

Co muszę zrobić, to mieć oświadczenie SET IDENTITY_INSERT dbo.myTable ON, jaka jest składnia korzystania z powyższej instrukcji w aplikacji C#?Jak ustawić SET IDENTITY_INSERT dbo.myTable instrukcja ON

+2

Do kogo ta oznaczona jako „nie jest prawdziwa pytanie” - Proszę przeczytać [SET IDENTITY_INSERT] (http://msdn.microsoft.com/en-us /library/ms188059.aspx). –

+0

Kucyki @OMG - Zastanawiam się, dlaczego ktoś "nie był prawdziwym pytaniem", także: -/ – Rob

Odpowiedz

19

To tak samo jak każdy inny kawałek 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

brak prawego nawiasu na końcu "przy użyciu" linii –

3

dobrze, jeśli to część instancji SqlCommand, wystarczy dodać go do tekstu:

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

kwestionuję Konieczność tego jednak. Jeśli wstawiasz tożsamość do tabeli z wystarczającą częstotliwością, z której korzystasz z kodu, poleciłbym procedurę przechowywaną do wykonania wstawki. Można by wtedy nazwać w zasadzie w ten sam sposób:

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

Aaaaargh, procedury przechowywane z "usp_" z prefiksem, moje oczy, moje oczy, to burrrrrrns! ;) – Rob

+0

@Rob - tak, wiem, stara konwencja. Bardzo mi się podoba, bo łatwiej znaleźć w studio zarządzania (dla mnie). Nie służy żadnemu innemu celowi. Jeśli naprawdę chcesz, myślę, że mogę to zmienić. Tylko dla Ciebie. : P – AllenG

+2

Meh - o ile nie jest to "sp_", zobacz: http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/don-t-start-your-procedures-with-sp_ –