|
Мягкое удаление NHibernate и Where clause
|
|||
---|---|---|---|
#18+
Добрый день, Есть NHibernate, и везде мягкое удаление, но возникла такая схема: (в общем схема сложная, я ее пока приводить не буду, отмечу такую особенность NHibernate) У нас коллекция маппится с помощью условия Where HasMany(x => x.Elements).AsSet().Access.CamelCaseField().KeyColumn("EntityId").Inverse().Cascade.SaveUpdate().Where("DeleteDate is null"); Тогда NH вставляет условие в каждый запрос. Но тут беда в том, что если есть иерархия объектов, и мы в одной сущности хотим иметь коллекцию элементов-предков, а в другой коллекцию элементов-потомков. DeleteDate мапится либо в одну таблицу, либо в другую. Если она мапится в таблицу с потомками, то у предка не получается выполнить запрос, там нет признака удаления. Если она мапится в таблицу с предками, то NHibernate при запросе к коллекции объектов-потомков пытается сделать Where DeleteDate is null прямо для таблицы с потомками, а там нет такого поля. Мапить DeleteDate в обе таблицы нам не разрешают. Как быть? Нашел доп. форму Where у HasMany, которая принимает лямбду. Где бы про нее почитать? Когда пытаюсь дать .Where(x=>x.DeleteDate == null), NHibernate при старте мне ругается, а InnerException говорит, что переменная x не определена (??!!!) Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2011, 13:21 |
|
Мягкое удаление NHibernate и Where clause
|
|||
---|---|---|---|
#18+
NHibernate_User_, я правильно понимаю, что у классов предка и потомка нет свойства DeleteDate? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2011, 10:26 |
|
Мягкое удаление NHibernate и Where clause
|
|||
---|---|---|---|
#18+
Добрый день, Мы пробовали 2 варианта 1) Свойство DeleteDate есть и у предка, и у потомка, т.к. оно объявлено в предке (значит, доступно и потомку). Замаплено оно в таблицу предка. 2) Свойство DeleteDate есть только у потомка, т.к. оно объявлено в потомке Замаплено оно в таблицу потомка. (1) - проблема: NHibernate при запросе к коллекции объектов-потомков пытается сделать Where DeleteDate is null прямо для таблицы с потомками, а там нет такого поля. (2) - проблема: у предка не получается выполнить запрос, т.к. в нем нет DeleteDate. А надо, чтобы можно было сохранять экземпляры предков (не являющихся никакими своими потомками), а также потомков. Т.е. от A произошло B, и C, D. Есть экземпляры B, C и D (все они, понятно, являются при этом A), а есть такие экземпляры A, которые не являются никакими из своих потомков. Надо сохранять и то, и то. Как? (Если используется .Where("DeleteDate is null")) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2011, 12:04 |
|
|
start [/forum/topic.php?fid=17&fpage=40&tid=1350575]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 128ms |
0 / 0 |