【问题标题】:Is GeneratedBy.Increment() thread-safe within a single SessionFactory?GeneratedBy.Increment() 在单个 SessionFactory 中是线程安全的吗?
【发布时间】:2018-01-18 20:04:41
【问题描述】:

我的应用程序使用

Id(x => x.Id).GeneratedBy.Increment();

用于生成主键。我已经阅读了几篇关于Increment 的文章,现在我很担心:所有这些文章都说Increment集群 中使用时很危险。但是,没有集群,它是一个普通的 Web 应用程序,只有一个 SessionFactory 实例。但是有并发线程,它们都共享同一个SessionFactory

我应该担心吗?什么对象为新创建的实例提供主键值?是线程安全的SessionFactory,还是不安全的Session

【问题讨论】:

    标签: .net database multithreading nhibernate fluent-nhibernate


    【解决方案1】:

    查看sourceIncrementGenerator 类的Generate() 方法被MethodImpl 属性和MethodImplOptions.Synchronized 选项修饰。这个suggests 对方法的访问是同步的,因此是线程安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-16
      • 2011-11-13
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      相关资源
      最近更新 更多