当前位置:  开发笔记 > 编程语言 > 正文

如何关闭NHibernate的自动(脏检查)更新行为?

如何解决《如何关闭NHibernate的自动(脏检查)更新行为?》经验,为你挑选了1个好方法。

我刚刚发现,如果我从NHibernate会话中获取一个对象并更改对象的属性,NHibernate会在没有调用的情况下自动更新提交对象Session.Update(myObj)!

我可以看到这可能会有所帮助,但作为默认行为,它似乎很疯狂!

更新:我现在理解持久性无知,所以这种行为现在显然是首选.我会在这里留下这个令人尴尬的问题,希望能帮助其他亵渎用户.

我怎么能阻止这种情况发生?这是默认的NHibernate行为还是来自Fluent NHibernate的AutoPersistenceModel?

如果没有办法阻止这个,我该怎么办?除非我忽略了这一点,否则这种行为似乎会造成一个混乱.

我从2009年8月18日开始使用NHibernate 2.0.1.4和Fluent NHibernate构建

难道这家伙的权利与他的回答?

我还读过,重写事件监听器可能是解决这个问题的方法.但是,IDirtyCheckEventListener.OnDirtyCheck在这种情况下不会被调用.有谁知道我需要覆盖哪个监听器?



1> Ben Scheirma..:

你可以设置Session.FlushModeFlushMode.Never.这将使您的操作明确

即:开tx.Commit()session.Flush().当然,这仍然会在提交/刷新时更新数据库.如果您不想要这种行为,那么调用session.Evict(yourObj)然后它将变为瞬态,NHibernate将不会为它发出任何db命令.

回复你的编辑:是的,那家伙为你提供了更多如何控制它的选项.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有