流畅的NHibernate乐观锁和延迟加载
本文关键字:延迟加载 乐观 NHibernate | 更新日期: 2023-09-27 18:04:18
我是新手流畅的nhibernate(也是hibernate)。我使用LLBLGEN生成了我的nhibernate代码。现在,从我在教程中看到的情况来看,LLBLGEN生成的代码不是很好,所以我有点怀疑,决定检查一下输出。
每个映射文件在将属性映射到列之前,在其构造函数中调用以下行:
Table("TABLE_NAME");
OptimisticLock.None();
LazyLoad();
我理解Table
方法,但其他方法呢?它们真的有必要吗?
由于我不是NHibernate专家,请将我的回答作为从互联网上现有文献的推断。
首先是LazyLoad();
句子。
无论你在你的项目中如何定义默认的延迟加载策略,LazyLoad();
语句都会强制NHibernate在执行映射时实现延迟加载。
第二,OptimisticLock.None();
句。
摘自Ayende关于NHibernate映射并发的相关文章:
None基本上意味着我们退回到事务语义我们在数据库中使用的。数据库可能会把我们排除在外,但是从这一点来看,我们真的不太关心事情。
和查看Hibernate项目文档
如果你启用动态更新,你可以选择乐观锁定策略:
- version:检查版本/时间戳列
- all:检查所有列
- dirty:检查更改的列,允许一些并发更新
- none:不使用乐观锁定
我假设在代码中使用OptimisticLock.None();
语句告诉NHibernate不建立任何锁定策略,并将锁定行为延迟到底层数据库。