NHibernate映射属性+脏检查

Hal*_*Hal 1 c# nhibernate nhibernate-mapping .net-3.5

我有问题NHibernate更新我的一些实体时,这不应该发生(脏检查).当我使用NHibernate.Mapping.Attributes来映射我的类时,我发现有一个参数"Check"到NHMA的元素"Class".我想知道我是否可以通过将此参数设置为false或其他东西来关闭脏检查(此参数所需的类型是字符串,因此可能不是这样).

任何帮助,将不胜感激 !

Pie*_*kel 5

首先,这不是你应该做的事情.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的内部状态保持正确并且实体变得不那么脏.