I usually use a stored procedure when inserting records to make sure that I get the correct scope_identity () value. I have a requirement to get the id field of an inserted record when using SqlClient.
My understanding is that if I execute the scope_identity () command with insert, will it still be in the same scope as the insert command? Something like below. It's hard to check though ... Will I 100% get the correct id value with this ..?
(id field is an automatic increment of bigint - Sql Server)
long newid = 0; using (SqlConnection conn = new SqlConnection(....)) { conn.Open(); using (SqlCommand comm = new SqlCommand ("insert into .... ; select SCOPE_IDENTITY();", conn)) { SqlDataReader reader = comm.ExecuteReader(); if (reader.HasRows) { reader.Read(); newid = Convert.ToInt64(reader[0]); } } }
source share