|
|
|
NHibernate. История измения объекта
|
|||
|---|---|---|---|
|
#18+
Задача: Существует объект, которые может меняться с течением времени, как в 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> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 12:02 |
|
||
|
NHibernate. История измения объекта
|
|||
|---|---|---|---|
|
#18+
Способ #1 (если класс с его чайлдами не раскидан по куче таблиц) У класса заводишь следующие поля(помимо тех, что ему нужны) 1) Кто изменил 2) Когда изменил 3) Кому изменил Номер версии 4) (булево) является ли последней версией? Когда сохраняешь объект, у текущего объекта ставишь в false что он текущая версия, делаешь его копию и её сохраняешь (номер версии ставится хибернейтом автоматически) Способ #2 - когда объект со сложной структурой Помимо своего класса заводишь табличку вида 1) Кто 2) Когда 3) Тип объекта, который поменялся 3.5) Id объекта 4) XML/JSON представление объекта до изменения 5) XML/JSON представление объекта после изменения 6) XML/JSON представление изменений в объекте В этом случае история хранится отдельно, причём история может быть для всех объектов Я пробовал оба способа, второй мне очень понравился, когда я ещё и сохранял код, который показывает объект - тогда изменение структуры класса (например, добавилось одно поле и удалилось три) не мешает смотреть, как выглядел объект год назад (поскольку в базе и объект, и код, который объект рисует на форме) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2009, 20:44 |
|
||
|
NHibernate. История измения объекта
|
|||
|---|---|---|---|
|
#18+
Использую таблицу с полями аналогичными исходной таблице + дата изменения, автор изменения. Текущее состояние = последняя запись, состояние объекта до изменения = предыдущая запись. Записи вставляются с тиррерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2009, 02:57 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=66&tid=1351650]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 426ms |

| 0 / 0 |
