Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE) / 20 сообщений из 20, страница 1 из 1
23.07.2010, 12:41
    #36756290
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
Добрый день, коллеги!
Имею в составе класса поле, которое должно получать свое значение в момент добавления (или модификации) экземпляра объекта в БД.
Для ADO.NET это бы довольно просто отразилось в тексте Command:
Код: plaintext
1.
2.
3.
4.
insert into BOO (BOO_ID, BOO_DATE) values (SEQ_BOO_ID.Nextval, Sysdate)
/
update BOO set BOO_DATE = Sysdate where BOO_ID = :BOO_ID
/

Как такое поле оформить в Nhibernate?
...
Рейтинг: 0 / 0
23.07.2010, 13:38
    #36756469
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
сделайте триггер и еб-те мосг
...
Рейтинг: 0 / 0
23.07.2010, 14:24
    #36756583
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
IIdentifierGenerator?
...
Рейтинг: 0 / 0
23.07.2010, 14:25
    #36756585
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
pation,
Триггер где?
Накой мне тогда Nhibernate, если я под каждую СУБД буду с бубном танцевать?
...
Рейтинг: 0 / 0
23.07.2010, 14:27
    #36756594
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУIIdentifierGenerator?
Предположим, можно задать SYSDATE в качестве генератора идентификатора...
Можно ли дать такой мэппинг для не-идентификатора?
...
Рейтинг: 0 / 0
23.07.2010, 15:32
    #36756786
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
КурдльМожно ли дать такой мэппинг для не-идентификатора?
Можно. В "момент добавления (или модификации)" нужно произвести необходимые вычисления.
У Вас возникнет вопрос: "как внедрить код в этот самый момент".
Ответ: используйте обертку DAL и в ней работайте. Например, используйте паттерн репозиторий. В момент сохранения (не ISession.SaveOrUpdate, а IRepository.SaveOrUpdate) и получайте своё значение.
Идея понятна?

P.S. Как дела обстоят с прошлым сабжем? Некрасиво оставлять тред без итогов.
...
Рейтинг: 0 / 0
23.07.2010, 15:48
    #36756838
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУ,
идея понятна.
Я использую репозиторий.
Проблема в этой части: "...и получайте своё значение".
Какое? "DateTime.Now"?
Мне нужна системная дата СУБД!
...
Рейтинг: 0 / 0
23.07.2010, 16:10
    #36756910
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
КурдльКакое? "DateTime.Now"? Мне нужна системная дата СУБД!
Нужна системная дата СУБД - обращайтесь к СУБД и получайте её.
Если речь о получении даты в контексте исполняемого батча - используйте default value поля или хп.
В чём сложность?

МСУP.S. Как дела обстоят с прошлым сабжем? Некрасиво оставлять тред без итогов.[/quote]
Курдль, игнор?
...
Рейтинг: 0 / 0
23.07.2010, 16:12
    #36756918
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУиспользуйте default value поля или хп
+ Computed Column Specification (formula)
...
Рейтинг: 0 / 0
23.07.2010, 16:41
    #36756988
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУ,

Извиняюсь! Не прочел Ваше сообщение о прошлом посте (но меня можно извинить - оно мелкое и выделено серым! ;)

Кстати, это защитная реакция на всякую "многозначительную" чушь, которую любят прицеплять к своему сообщению некоторые постеры.

Сейчас в ту ветку отпишусь.
...
Рейтинг: 0 / 0
23.07.2010, 16:46
    #36757009
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
offКурдльоно мелкое и выделено серым!

Потому что оно как бы не относится к каррент треду :)
...
Рейтинг: 0 / 0
23.07.2010, 16:47
    #36757016
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУМСУиспользуйте default value поля или хп
+ Computed Column Specification (formula)

Видимо так! Надо попробовать.
Но займусь этим позже. Сейчас из ситуации выкрутился.
Мне нужно было получить однозначно более поздний объект. В принципе, согласно логике моей БД это можно сделать и по ID.
...
Рейтинг: 0 / 0
23.07.2010, 16:50
    #36757021
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
Курдль, не в обиду будет сказано, но у Вас условия задачи меняются на лету достаточно перманентно
...
Рейтинг: 0 / 0
23.07.2010, 17:02
    #36757058
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУКурдль, не в обиду будет сказано, но у Вас условия задачи меняются на лету достаточно перманентно
Почему? Условия задачи не меняются. Меняются варианты их реализации. Приходится идти на "сделку с совестью" ради скорости. Но если риск невелик - можно не волноваться.

Условия из логики предметной области такие: нужно упорядочить некие объекты строго по времени их создания. Есть служебное поле ДАТА_СОЗДАНИЯ. По логике доступа никто, кроме сервера, его менять не может. Значение ему должно присваиваться строго по времени сервера.
Но по перечисленным характеристикам это служебное поле ведет себя, как идентификатор.
Значит можно применить для упорядочивания идентификатор, нарушив логику предметной области, но не нарушив логику автоматизированной системы.
...
Рейтинг: 0 / 0
23.07.2010, 17:17
    #36757088
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
КурдльПочему? Условия задачи не меняются. Меняются варианты их реализации

Да уж,

КурдльКакое? "DateTime.Now"? Мне нужна системная дата СУБД!

КурдльМне нужно было получить однозначно более поздний объект. В принципе, согласно логике моей БД это можно сделать и по ID.

то-ли Вы перегрелись на солнышке, то-ли я нуб
...
Рейтинг: 0 / 0
23.07.2010, 17:30
    #36757114
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
МСУ,
это Вы, похоже, уже к пиву приложились! ;)

Задача.
Есть экземпляры А и В неважно_какой_сущности.
Какой из них создан позже?
Вариант 1: Тот, у которого в поле ДАТА_СОЗДАНИЯ прописана более поздняя дата.
Вариант 2: Тот, у которого больше значение идентификатора.
Применив 2-й вариант я ничем не рискую, пока логика предметной области не изменится и кому-то не взбредет править вручную поле ДАТА_СОЗДАНИЯ.
...
Рейтинг: 0 / 0
23.07.2010, 17:34
    #36757123
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
КурдльМСУ, это Вы, похоже, уже к пиву приложились! ;)
Нет, атец, это Вы не научились чётко формулировать вопросы :)

1МСУМожно. В "момент добавления (или модификации)" нужно произвести необходимые вычисления.
У Вас возникнет вопрос: "как внедрить код в этот самый момент".
Ответ: используйте обертку DAL и в ней работайте. Например, используйте паттерн репозиторий. В момент сохранения (не ISession.SaveOrUpdate, а IRepository.SaveOrUpdate) и получайте своё значение.
Идея понятна?


2КурдльМСУ,
идея понятна.
Я использую репозиторий.
Проблема в этой части: "...и получайте своё значение".
Какое? "DateTime.Now"?
Мне нужна системная дата СУБД!


И тут выясняется, что

3КурдльМне нужно было получить однозначно более поздний объект. В принципе, согласно логике моей БД это можно сделать и по ID.


P.S. Что курим, что пьем?
...
Рейтинг: 0 / 0
26.07.2010, 12:36
    #36759211
Dmitdd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
Курдль
Мне нужно было получить однозначно более поздний объект. В принципе, согласно логике моей БД это можно сделать и по ID.
Посмотрите тип данных TIMESTAMP в БД и его же использование в NHibernate
...
Рейтинг: 0 / 0
26.07.2010, 12:43
    #36759244
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
Dmitdd,

Спасибо! Посмотрел. В БД - классный такой тип!
А куда конкретно смотреть в Nhibernate в этой связи?
...
Рейтинг: 0 / 0
26.07.2010, 13:02
    #36759302
Dmitdd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE)
Курдль
А куда конкретно смотреть в Nhibernate в этой связи?
в документации поиск по TIMESTAMP
5.1.8. timestamp (optional) (chm-файл документации)
ну и примеры использования какие найдете в документации
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Nhibernate. Поля, связанные с системными переменными СУБД (SYSDATE) / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]