NHibernate и Interceptor в совокупном корне

Предположим, что у объекта A есть список объектов B, а B связан с одним из C.

Используя NHibernate, если я обновляюсь как экземпляр C, как я могу получить уведомление о том, что «что-то», связанное с одним экземпляром (и каким экземпляром) A, было обновлено?

Используя перехватчик, я знаю, что C был обновлен, но как автоматически следовать путем C -> B -> A (например, C не знает B, а C не всегда является совокупным корнем).


person PascalT    schedule 03.06.2013    source источник


Ответы (1)


В зависимости от специфики вашего сопоставления вы всегда можете искать связанные B объекты каждый раз, когда объект C изменяется. Учитывая, что B связан с C отношением внешнего ключа, вы можете искать все B (или единственный B), внешний ключ которого равен первичному ключу сущности C.

Если в то же время B не знает о A, вы можете использовать аналогичную процедуру, чтобы уведомить, к какому экземпляру A он относится. Или, с другой стороны, B имеет ссылку на A, вы можете использовать это отношение вместо этого.

Конкретная реализация будет зависеть от того, как именно вы сопоставляете эти объекты вместе.

person rae1    schedule 03.06.2013
comment
Вы хотите создать перехватчик NH, и когда обновленный объект имеет тип C, выполнить запрос или выполнить навигацию по отношениям, чтобы найти B, а затем A? - person PascalT; 04.06.2013
comment
Если у вас нет отношений, установленных от C к B или от B к A, тогда да. - person rae1; 04.06.2013