nhibernate - порядок отображения - шаблон / решение? - PullRequest
0 голосов
/ 09 ноября 2009

У меня есть коллекция ReportColumns в объекте отчета.

ReportColumns имеет поле DisplayOrder, которое устанавливает, где в отчете отображается столбец. эти столбцы можно изменить в пользовательском интерфейсе дизайнера, и я могу написать какой-нибудь хакерский код, чтобы изменить их порядок - но было ли интересно, есть ли в nhib средство для переупорядочения объектов на основе столбца? или, возможно, стандартный шаблон для подражания? кажется довольно стандартной вещью, которую хочется сделать.

ш: //

Ответы [ 2 ]

0 голосов
/ 09 ноября 2009

закончилось использованием триггера:

IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'colmodels_insupd' AND type = 'TR')
   DROP TRIGGER employee_insupd
GO
CREATE TRIGGER colmodels_insupd
ON ColModels
FOR INSERT, UPDATE
AS

update cm
set displayorder = a.rownumber
from
colmodels cm
inner join
(
select colmodels.id, row_number() OVER(partition by colmodels.reportid ORDER BY colmodels.displayorder, colmodels.id desc) as rownumber
from colmodels inner join inserted 
on colmodels.reportid = inserted.reportid and  colmodels.deleted = 0 and colmodels.hidden = 0 
) a
on cm.id = a.id
0 голосов
/ 09 ноября 2009

Не знаю, правильно ли я понимаю вопрос, но: вы можете попросить NH получить столбцы в порядке, указанном в столбце (даже если он не отображается):

HasMany(x => x.Columns)
                .Inverse()
                .Cascade.All()
                .Not.LazyLoad()
                .OrderBy("DisplayOrder")

Здесь объекты ReportColumn в свойстве Columns будут в порядке, указанном в OrderBy.

В HBM это будет атрибут order-by вашей коллекции:

http://nhibernate.info/doc/nh/en/index.html#collections-mapping

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...