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

保存时的NHibernate FlushMode

如何解决《保存时的NHibernateFlushMode》经验,为你挑选了1个好方法。

我已经将NHibernate会话上的FlushMode属性设置为FlushMode.Never,但是当我调用session.Save(User)时,无论如何都会调用数据库.这是怎么回事?我认为在调用Flush()之前不应该插入.

编辑:我发现了问题,我将主键更改为guid并且工作正常.是否有其他类型(即没有guid主键)可以工作?我宁愿有一个数字而不是一个guid ......



1> Jorge Alves..:

你使用的是原生发电机,对吧?

这个问题在于,由于它是生成ID的DB,因此NHibernate需要往返才能获取它.例如,对于服务器的标识字段,必须在SCOPE_IDENTITY()返回有效密钥之前执行实际的INSERT语句.并且安全地执行此操作的唯一方法是刷新会话.

作为guids和identity的替代品,您可以尝试使用"增量"生成器来查看它是否符合您的需求:http: //www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/mapping.html#mapping -declaration-ID发电机

您应该知道,如果您对应用程序进行集群,或者您将某些其他进程或应用程序插入到同一个表中,则此方法将不可行.

PS:如需进一步阅读,请尝试http://unhandled-exceptions.com/blog/index.php/2008/12/11/on-choosing-an-identity-type/

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