首页 新闻 赞助 找找看

NHibernate的SaveorUpdate原理

0
悬赏园豆:30 [待解决问题]

我想知道SaveOrUpdate是什么时候判断是新增还是更新的,在我的意识中,在调用这个方法的时候,应该会去数据查一下数据是否存在,为什么只支持自增长列呢,去查看SqlProfiler,却没有发现这条select语句,只有insert或是update语句能截到,我想知道这个判断在什么时候进行,如果并发的时候,又是如何保证这个状态的准确性呢?

浪潮的主页 浪潮 | 初学一级 | 园豆:77
提问于:2014-12-18 14:00
< >
分享
所有回答(2)
0

肯定是要有一个条件来判断的.

吴瑞祥 | 园豆:29449 (高人七级) | 2014-12-18 16:19
1

如果记得没错的话,应该是下面的逻辑:

1. 如果主键有值, 是先判断这个对象是否在当前的对想池中(NHibernate在获取对象之后,会维护这个状态, 这里我假设是一个池) 如果这个池里有这个对象,那就是Update, 没有则就是添加, 所以这个并不是从数据库去拿的, 

2. 就是主键没值的情况,那这个就是直接做Save.

 

以上回答来自于使用经验,并非严格做了测试,有误的地方欢迎你扔鸡蛋。

NiuSys | 园豆:202 (菜鸟二级) | 2014-12-18 18:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册