|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.12.2015, 15:54 | #1 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 27
|
nHibernate, неожиданный cast varchar(255)
Приветствую!
Заметил странное для меня поведение в nHibernate. Формирую критерию для выполнения запроса. Запрос простой - получить из таблицы записи с Id из списка. Пользуюсь Restrictions.In"/"Restrictions.InG". Само поле Id у меня имеет тип string (в базе varchar(36)), в нем хранится Guid. Создаю критерию следующим образом: Код:
Код:
Код:
Код:
Причем если делать обычный условие Equals, то преобразований (cast-oв) нет: Код:
Код:
Заранее спасибо! Последний раз редактировалось Stilet; 28.12.2015 в 17:58. |
28.12.2015, 16:07 | #2 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
выбросить nHibernate как отживший свое время
|
28.12.2015, 16:54 | #3 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 27
|
Хорошо :-)
А есть варианты с nHibernate? Просто вся система уже настроена через этот фреймворк |
28.12.2015, 17:01 | #4 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Так проблема то в чем? ну конвертит и конвертит, ну и что?
работает же |
28.12.2015, 17:09 | #5 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 27
|
Вытекают 2 проблемы/неудобства:
1) увеличивается скорость работы (для каждого элемента пусть и тратится совсем немного времени на его cast, но если элементов много, более 1000, то это уже заметно); 2) cast в varchar(255) при необходимости только в 36 символах удлиняет саму итоговую SQL строку запроса. Пороговое количество элементов, которые можно уместить в одном запросе, уменьшается. Придется дробить на несколько подзапросов и т.п. Мне сейчас именно поведение непонятно и, как следствие, вопрос - как можно на это повлиять? |
28.12.2015, 17:14 | #6 | |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Цитата:
|
|
28.12.2015, 17:18 | #7 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 27
|
Да, к сожалению и моему пока непониманию - да, для каждого элемента из списка, который я подставляю в
Код:
Последний раз редактировалось Stilet; 28.12.2015 в 17:58. |
28.12.2015, 18:23 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
и что же сейчас современно по вашему?
ТС, а почему не взят нормальный GUID тип? а так вам стоит к ним идти и писать об этом, слишком узкое все же. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
28.12.2015, 18:29 | #9 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 27
|
База FireBird, по умолчанию нет такого поля :-(
|
28.12.2015, 18:37 | #10 | ||
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Цитата:
Цитата:
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
xml-mapping NHibernate | Лета | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 7 | 13.03.2014 11:23 |
Подключение к Interbase через NHibernate | Axilees | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 1 | 15.03.2012 08:09 |
Nhibernate | nats | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 1 | 01.04.2011 11:10 |
String большого размера, более 255 String[255] | bitSoft | Общие вопросы Delphi | 9 | 28.03.2010 19:45 |
Как изменить в InterBase размер поля varchar(10) на varchar(20) | tarakan1983 | БД в Delphi | 4 | 23.03.2009 15:35 |