Scope_identity () em comandos sqlclient em lote
Normalmente, uso um procedimento armazenado ao inserir registros para garantir que eu recebo o valor correto scope_identity (). Eu tenho um requisito para obter o campo de identificação de um registro inserido ao usar o SqlClient agor
Meu entendimento é que, se eu agrupar o comando scope_identity () com a inserção, ele ainda estará no mesmo escopo que o comando insert? Algo como abaixo. Difícil de verificar ... Vou obter 100% do valor de identificação correto com isso ..?
(o campo id é um bigint de incremento automático - 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]);
}
}
}