Моя когорта строит несколько длинный поисковый запрос, основанный на различных входных данных от пользователя. У нас есть NHibernate с использованием Fluent NHibernate, и, кроме некоторых ошибок noob, кажется, что все идет хорошо.
Одна проблема, которую мы не можем решить в случае этого поиска, заключается в том, что для определенного параметра NHibernate создает sql, который обрабатывает ввод как int, когда нам явно требуется, чтобы он был строкой. У нас есть строковое свойство, сопоставленное столбцу nvarchar (255), который в основном содержит целые числа, за исключением некоторых произвольных входных данных, таких как «временные» или длинных чисел, таких как 4444444444444444, которые выходят за пределы int.
В ходе тестирования я видел пару вещей: 1) Если я добавляю 0 к входящему значению, NH генерирует параметр sql в виде строки, соответственно; 2) Если значение реально может быть преобразовано в целое число, результирующий SQL обрабатывает его так. В случае № 2, если я запускаю сгенерированный sql напрямую через сервер sql, я получаю исключение, когда в запросе встречается нецелочисленное значение (например, примеры, которые я перечислил выше). По какой-то причине, когда я просто позволяю NH сделать это, я получаю соответствующие записи обратно, но это не имеет смысла; Я ожидал, что это не получится, или, по крайней мере, скажу, что что-то не так с некоторыми записями, которые не могут быть оценены SqlServer.
Отображение простое, хранилище данных простое; Я был бы в порядке, оставив достаточно хорошо в одиночестве, если бы я хотя бы понял, почему / как NHibernate делает эту работу, когда запуск одного и того же состояния вручную дает сбой ... Есть мысли?