2012-02-23 5 views
1

Родительский стол OBJECT.Как связать таблицу истории с родительской таблицей

Таблица детей OBJECT_STATUS_HISTORY.

У одного OBJECT много OBJECT_STATUS_HISTORY.

Для текущего статуса OBJECT актуальна только последняя OBJECT_STATUS_HISTORY.

Могу ли я сопоставить эти две таблицы так, как они есть, и заставить NHibernate делать сопоставление OBJECT с OBJECT_STATUS_HISTORY, но! имея доступ только к последней записи. В принципе, вы можете ограничить отображение one_to_many одним_to_one некоторым условием? OBJECT_STATUS_HISTORY останется мешком или набором или списком только с одним объектом или с одним объектом, это не так важно.

Это устаревшая база данных, и этот шаблон все вокруг, поскольку база данных получает исторический ввод извне, и нет, я не могу создать флаг в таблице OBJECT, который дал бы мне текущий статус, а затем сопоставлял бы его непосредственно с NHibernate.

Конечно, я могу добавить в класс памяти OBJECT статус от OBJECT_STATUS_HISTORY позже, но вопрос в следующем: могу ли я сделать это только с помощью сопоставления? Я могу легко создать инструкцию SQL для этого объекта, поэтому по существу я могу создать представление с вышеуказанным требованием, а затем отобразить его в NHibernate, но может ли NHibernate сделать это самостоятельно?

Позвольте мне сейчас, если вопрос не был достаточно ясным.

+0

Итак, вы хотите добавить фильтр на 'bag' или' set', который извлекает последнюю 'object_status_history' для' order'? – Rippo

+0

Да. Мне кажется, что это невозможно в каком-то общем смысле. Можно вернуть что-то последнее, например ID с последней датой. По существу, вопрос заключается в следующем: вы можете каким-то образом отфильтровать «0-ко-многим», чтобы получить 0-к-1 некоторым условием. –

ответ

1

В TSQL я бы использовал верх, чтобы получить только одну запись, а в запросе сделайте заказ, чтобы вы всегда получали самую новую запись.

select top 1 * from table_name 
+0

Несомненно, это решение, касающееся самого SQL, но что делать с NHibernate, как связать его, чтобы иметь его как объект. –

Смежные вопросы