Ce que je dois faire est d'avoir une instruction SET IDENTITY_INSERT dbo.myTable ON
, quelle est la syntaxe de l'utilisation de l'instruction ci-dessus dans une application C#?Comment mettre SET IDENTITY_INSERT dbo.myTable ON instruction
Répondre
Il est tout de même que tout autre bit 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();
}
}
parenthèse droite à la fin de la ligne "using" –
Eh bien, si elle fait partie d'une instance SqlCommand
, vous venez d'ajouter au texte:
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.
}
Je doute de la nécessité de cela, cependant. Si vous insérez une identité dans une table avec assez de fréquence que vous utilisez du code, je recommanderais une procédure stockée pour faire votre insertion. Vous auriez alors appelez essentiellement de la même façon:
using(SqlConnection myConnectino = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "usp_insert_record_into_my_table [ParamList]";
cmd.CommandType = SqlCommandType.StoredProcedure;
}
Aaaaaargh, procédures stockées avec "usp_" préfixé, mes yeux, mon yeux, il burrrrrrns! ;) – Rob
@Rob - ouais, je sais, vieille convention. Je l'aime vraiment parce que c'est plus facile à trouver dans le studio de gestion (pour moi). Cela ne sert à rien d'autre. Si vous voulez vraiment, je suppose que je peux le changer. Juste pour toi. : P – AllenG
Meh - tant que ce n'est pas "sp_", voir: http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/don-t-start-your-procedures-with-sp_ –
Pour quiconque marqué cela comme « pas une vraie question » - s'il vous plaît lire le [SET IDENTITY_INSERT] (http://msdn.microsoft.com/en-us /library/ms188059.aspx). –
@OMG Ponies - Je me demandais pourquoi quelqu'un avait "pas une vraie question" 'd elle aussi: -/ – Rob