Для операторов UPDATE, INSERT и DELETE возвращаемое значение - это количество строк, затронутых командой.Если для вставляемой или обновляемой таблицы существует триггер, возвращаемое значение включает количество строк, на которые влияет операция вставки или обновления, а также количество строк, на которые влияет триггер или триггеры.Для всех других типов операторов возвращаемое значение равно -1.Если происходит откат, возвращаемое значение также равно -1.посмотрите на msdn
Но я не понимаю, что вы имеете в виду, когда сказали, что метод ExecuteNonQuery должен возвращать значение.Если вы хотите вернуть значение, вы должны использовать ExecuteScalar