Это может или не может помочь в зависимости от вашей цели. Если вам нужно определить, что было возвращено несколько строк, чтобы вызвать соответствующее исключение, это не поможет.
Если вы просто хотите убедиться, что возвращается только один результат, вы можете получить прирост производительности с помощью этого метода. Насколько я понимаю, поставщики данных могут использовать это для оптимизации запроса в ожидании результата из одной строки.
В любом случае вам нужно использовать SqlCommand.ExecuteReader для создания устройства чтения данных, но передать аргумент из перечисления CommandBehavior (в частности CommandBehavior.SingleRow). ExecuteReader перегружен, чтобы принять это.
Перечисление команд поведения
SqlCommand.ExecuteReader перегрузка
Итак, ваш код может выглядеть так:
using (var reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{
if (reader.Read())
{
result = new User((int)reader["UserId"], reader["UserName"].ToString());
}
}