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

时间:2014-05-19 17:40:44

标签: c# fluent-nhibernate

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

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

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

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

1 个答案:

答案 0 :(得分:1)

请将我的答案作为互联网上现有文献的一个推论,因为我不是NHibernate的专家。

首先,LazyLoad();句。

无论您如何在项目中定义默认延迟加载策略,LazyLoad();forces NHibernate在执行映射时实现延迟加载。

其次,OptimisticLock.None();句。

从Ayende的相关帖子到NHibernate mapping concurrence

  

None基本上意味着我们回退到事务语义   我们在数据库中使用。数据库可能会把我们抛弃,但除此之外   从那以后,我们并不在乎事情。

并查看Hibernate project documentation

  

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

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

我假设在代码上使用OptimisticLock.None();句子告诉NHibernate没有建立任何锁定策略并将锁定行为推迟到底层数据库。