Как связать таблицу истории с родительской таблицей - PullRequest
1 голос
/ 23 февраля 2012

Родительская таблица OBJECT.

Дочерняя таблица OBJECT_STATUS_HISTORY.

Один объект имеет много объектов OBJECT_STATUS_HISTORY.

Для текущего состояния OBJECT имеет значение только последний OBJECT_STATUS_HISTORY.

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

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

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

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

1 Ответ

1 голос
/ 06 июня 2012

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

select top 1 * from table_name
...