Прежде всего, я поясню несколько слов: когда я использую слово «пользователь», вы должны понимать «пользователь приложения» и «пациент em> "- это" элемент "слоя модели.
Давайте теперь объясним контекст:
В клиентском приложении есть кнопки «получить пациента» и «обновить», текстовое поле «имя пациента» и сетку для отображения пациента. возвращается после нажатия кнопки «Получить пациента».
На стороне сервера у меня есть метод GetPatient (строковое имя) WCF, который выполняет поиск восстановленного пациента и выполняет некоторую бизнес-логику для PatientEntity, используемого с nHibernate. Этот метод возвращает PatientDto (отображение из PatientEntity). И у меня есть метод Update (PatientDto Patient) для обновления измененного пациента.
Пользователь может изменить возвращенный PatientDto и нажать кнопку «Обновить».
На данный момент у меня есть две идеи для управления «сеансом» с помощью этого сценария:
Первая идея: я выставляю свойство «ID» в моем DTO, поэтому, когда пользователь нажимает на обновление, я ищу на стороне сервера «пациент em> "с указанным идентификатором с помощью nHibernate" GetByID () ", я обновляю результат данными из PatientDto и вызываю nHibernate" Update () < / em> "метод.
Вторая идея: я вручную создаю на стороне сервера класс CustomSession (я использую это имя для ясности), который инкапсулирует ISession и предоставляет уникальный идентификатор сеанса, который будет перемещаться между клиентом. и сервер. Итак, когда клиент отправляет серверу PatientDto и уникальный идентификатор сеанса, я могу получить CutsomSession и обновить пациента с помощью методов Update () из ISession
Мне не нравятся эти идеи. Потому что в первом случае много накладных расходов, и он не использует возможности nHibernate. И вторая идея требует, чтобы разработчик сам управлял идентификатором CustomSession между вызовами: это подвержено ошибкам.
Более того, я уверен, что nHibernate предоставляет такой механизм, хотя я погуглил и ничего не нашел об этом.
Тогда мои вопросы:
- Какой механизм (выкройку) использовать? Конечно, механизм должен поддерживать граф объектов сущности, а не отдельную сущность! "
- Предоставляет ли nHibenrate такой механизм? *
Заранее спасибо за вашу помощь,