Как выбрать ссылочную сущность в nhibernate queryover

У меня есть объект со свойством, ссылающимся на другой объект (ReferenceEntity в примерах).

С HQL я могу сделать это:

select e.ReferenceEntity from Entity e where e.Id = :entityId

NHibernate без ленивых выдаст мне экземпляр ReferenceEntity.

С запросом вместо попытки сделать это:

Session.QueryOver<Entity>()
.Where(e => e.Id == entityId)
.Select(e => e.ReferenceEntity)
.SingleOrDefault<ReferenceEntity>()

С QueryOver Nhibernate дает мне ReferenceEntity, но ленивый.

Я хочу получить ReferenceEntity с активной загрузкой, используя queryover, как я делаю с hql. НОРМАЛЬНЫЙ = "\ [\ 033 [0 м \]" КРАСНЫЙ = "\ [\ 033 [31; 1 м \]" при повторном создании приложения планирования, и нам нужно представить чье-то доступное расписание в течение дня, независимо от того, в каком часовом поясе они находятся. Взяв реплику из Joda Time's Interval, который представляет интервал в абсолютном времени между двумя экземплярами (начало включительно, конец исключено ), мы создали LocalInterval. LocalInterval состоит из двух LocalTimes (включая начало и исключение конца), и мы даже создали удобный класс для сохранения этого в Hibernate.

Например, если кто-то доступен с 13:00 до 17:00, мы бы create:

new LocalInterval(new LocalTime(13, 0), new LocalTime(17, 0));

Пока все хорошо --- пока кто-нибудь не захочет быть доступен с 23:00 до полуночи в какой-нибудь день. Поскольку конец интервала является исключительным, это должно быть легко представлено как :

new LocalInterval(new LocalTime(23, 0), new LocalTime(24, 0));

Ack! Нет. Это вызывает исключение, потому что LocalTime не может удерживать час больше 23.

Мне это кажется недостатком дизайна - Джода не учел, что кому-то может понадобиться LocalTime, представляющий неинклюзивную конечную точку.

Это действительно расстраивает. , поскольку он пробивает дыру в созданной нами модели, которая в остальном была очень элегантной.

Какие у меня есть варианты --- кроме разветвления Джоды и снятия чека на 24 часа? (Нет, мне не нравится вариант использования фиктивного значения - скажем, 23:59:59 - для представления 24:00.)

Обновление: для тех, кто постоянно повторяет, что такого нет как 24:00, вот цитата из ISO 8601-2004 4.2.3 Примечания 2, 3: «Конец одного календарного дня [24:00] совпадает с [00:00] в начале следующего календарного дня .. . "и" Представления, в которых [hh] имеет значение [24], предпочтительны только для представления конца временного интервала. обычная система ошибок - это bugzilla, и очень часто можно сделать CC другим людям / спискам, которые, как вы знаете, могут быть заинтересованы в ошибке / работе. Таким образом, они получат электронное письмо с уведомлением о любых дальнейших изменениях рабочего элемента / ошибки. Это очень распространенный метод передачи информации людям или группам.

Хотя с помощью TFS Power Tools я могу щелкнуть правой кнопкой мыши по рабочему элементу и получить предупреждения (фактически, я могу CC: себя), есть ли способ CC : другие люди?

Спасибо!

6
задан James H 21 March 2011 в 23:31
поделиться