SCOPE_IDENTITY devuelve el último valor de identidad insertado en una columna de identidad en el mismo ámbito. Un ámbito es un módulo:un procedimiento almacenado, desencadenador, función o lote. Por lo tanto, dos declaraciones están en el mismo ámbito si están en el mismo procedimiento almacenado, función o lote.
Puede usar SqlCommand.ExecuteScalar para ejecutar el comando de inserción y recuperar la nueva ID en una consulta.
using (var con = new SqlConnection(ConnectionString)) {
int newID;
var cmd = "INSERT INTO foo (column_name)VALUES (@Value);SELECT CAST(scope_identity() AS int)";
using (var insertCommand = new SqlCommand(cmd, con)) {
insertCommand.Parameters.AddWithValue("@Value", "bar");
con.Open();
newID = (int)insertCommand.ExecuteScalar();
}
}