Мы попробовали это в архитектуре клиент-сервер. Теперь мы переходим к DTO (объектам передачи данных). Это означает, что отсоединенные сущности больше не отправляются напрямую клиенту, а являются специализированными объектами.
Основная причина для движения в этом направлении - не NHibernate, а фактически сериализация, необходимая для отправки сущностей клиенту. В то время как вы можете использовать отложенную загрузку (и вы это сделаете!), Пока вы подключены к сеансу, вам нужно получить все ссылки из базы данных для ее сериализации.
У нас было много направляющих вместо ссылок и множество свойств, которые сопоставлены, но не сериализованы ... и это стало болью. Поэтому гораздо проще скопировать материал, который вы действительно хотите сериализовать, в его собственную структуру.
Кроме того, работающий отряд мог бы хорошо работать.
- Будьте осторожны с отложенной загрузкой, которая вызовет исключения при доступе к незагруженным объектам на отдельном экземпляре.
- Будьте осторожны с параллелизмом, вероятность того, что сущности изменились, пока они находятся в отрешенном состоянии, высока.
- Будьте осторожны, если вам нужна какая-то защита или даже если вы хотите, чтобы ваш сервер не мог вносить изменения в данные. Отсоединенные объекты могут потенциально вернуться в любое состояние.