powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate. История измения объекта
3 сообщений из 3, страница 1 из 1
NHibernate. История измения объекта
    #36222241
Arex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача:
Существует объект, которые может меняться с течением времени, как в NHibernate реализовать получение объекта на некоторую дату?
Есть вариант создание некоторого класса, который хранил бы его состояние по датам, не уверен что это правильно.
Например есть объект ObjectInstance и стечением времени может меняться его Name. Правильный ли маппинг, который описан ниже

<class name="ObjectInstance">
<id name="Id" type="Int64" column="ObjectInstance_id" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="Name"/>
</class>

<class name ="ObjectHistory">
<id name="Id" type="Int64" column="ObjectHistory_id" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="StartDate"/>
<property name="EndDate"/>
<property name="Name"/>
<many-to-one name="ObjectInstance_id"
column="ObjectInstance_id"
class="ObjectInstance"/>
</class>
...
Рейтинг: 0 / 0
NHibernate. История измения объекта
    #36231009
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способ #1 (если класс с его чайлдами не раскидан по куче таблиц)
У класса заводишь следующие поля(помимо тех, что ему нужны)
1) Кто изменил
2) Когда изменил
3) Кому изменил Номер версии
4) (булево) является ли последней версией?

Когда сохраняешь объект, у текущего объекта ставишь в false что он текущая версия, делаешь его копию и её сохраняешь (номер версии ставится хибернейтом автоматически)

Способ #2 - когда объект со сложной структурой
Помимо своего класса заводишь табличку вида
1) Кто
2) Когда
3) Тип объекта, который поменялся
3.5) Id объекта
4) XML/JSON представление объекта до изменения
5) XML/JSON представление объекта после изменения
6) XML/JSON представление изменений в объекте

В этом случае история хранится отдельно, причём история может быть для всех объектов
Я пробовал оба способа, второй мне очень понравился, когда я ещё и сохранял код, который показывает объект - тогда изменение структуры класса (например, добавилось одно поле и удалилось три) не мешает смотреть, как выглядел объект год назад (поскольку в базе и объект, и код, который объект рисует на форме)
...
Рейтинг: 0 / 0
NHibernate. История измения объекта
    #36231859
Dmitry Sukhovilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую таблицу с полями аналогичными исходной таблице + дата изменения, автор изменения.
Текущее состояние = последняя запись, состояние объекта до изменения = предыдущая запись.
Записи вставляются с тиррерами.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate. История измения объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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