2011-03-06 4 views
11

В моей сессии nhibenate I Отображение объекта с помощью AutoMapper и в действии afterMap я создаю новый экземпляр объекта, потому что я извлекаю объект из базы данных для сравнения свойств. Таким образом, AutoMapper создает два экземпляра одного объекта с тем же идентификатором. Когда я пытаюсь зафиксировать сеанс, я получаю сообщение об ошибке, с которым я должен возражать с тем же идентификатором.Отключить объект из сеанса NHibernate

Итак, я хочу отключить объект, который я извлекаю после сравнения свойств. После этого я могу совершить сеанс

Как я это делаю?

Спасибо!

ответ

13

Вы можете использовать session.Evict(persistentObject), чтобы вырезать постоянный объект из сеанса. Это приведет к удалению объекта из кеша 1-го уровня, что позволит вам очистить сеанс.

+0

Можно ли удалить его со всех сеансов? – Joel

+0

Если вы не делаете что-то действительно надуманное, ваши объекты будут связаны не более чем с одним сеансом: тот, который увлажнил его – mookid8000

+0

Я действительно хочу, чтобы это было правдой. У меня есть код устаревшего кода, который создает более забавные вещи, поэтому я наткнулся на это исключение, и я надеялся, что будет какое-то хакерское решение, но, о, хорошо ... – Joel

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