流畅的NHibernate乐观锁和延迟加载

本文关键字:延迟加载 乐观 NHibernate | 更新日期: 2023-09-27 18:04:18

我是新手流畅的nhibernate(也是hibernate)。我使用LLBLGEN生成了我的nhibernate代码。现在,从我在教程中看到的情况来看,LLBLGEN生成的代码不是很好,所以我有点怀疑,决定检查一下输出。

每个映射文件在将属性映射到列之前,在其构造函数中调用以下行:

Table("TABLE_NAME");
OptimisticLock.None();
LazyLoad();

我理解Table方法,但其他方法呢?它们真的有必要吗?

流畅的NHibernate乐观锁和延迟加载

由于我不是NHibernate专家,请将我的回答作为从互联网上现有文献的推断。

首先是LazyLoad();句子。

无论你在你的项目中如何定义默认的延迟加载策略,LazyLoad();语句都会强制NHibernate在执行映射时实现延迟加载。

第二,OptimisticLock.None();句。

摘自Ayende关于NHibernate映射并发的相关文章:

None基本上意味着我们退回到事务语义我们在数据库中使用的。数据库可能会把我们排除在外,但是从这一点来看,我们真的不太关心事情。

和查看Hibernate项目文档

如果你启用动态更新,你可以选择乐观锁定策略:

  • version:检查版本/时间戳列
  • all:检查所有列
  • dirty:检查更改的列,允许一些并发更新
  • none:不使用乐观锁定

我假设在代码中使用OptimisticLock.None();语句告诉NHibernate不建立任何锁定策略,并将锁定行为延迟到底层数据库。