Во-первых, это не то, что вы должны делать. NHibernate старается сделать что-то вроде грязной проверки правильности. Если NHibernate думает, что это грязно, это, вероятно, так. Попытайтесь выяснить, какие изменения вы внесли в сущность, из-за которых NHibernate думает, что она грязная, и посмотрите, сможете ли вы решить эту проблему, настроив это.
Тем не менее, есть решение. NHibernate использует слушатели, которые запускаются перед вставкой и обновлением. Более подробную информацию об этом можно найти в http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx, http://www.codinginstinct.com/2008/04/nhibernate-20-events-and-listeners.html и во многих других местах .
Слушатели события сами имеют возвращаемое значение. Это возвращаемое значение говорит NHibernate, выполнять ли фактические SQL-запросы вставки / обновления. Когда вы возвращаете false
, он выполняет их. Когда вы возвращаете true
, это не так. Таким образом, вы можете подавить фактическое сохранение в базе данных.
Хорошая особенность этого подхода заключается в том, что в отношении NHibernate он полагает, что сущности фактически сохранились, поэтому внутреннее состояние NHibernate остается корректным, и сущности становятся не грязными.