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]);
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion