GeneratedBy.Increment()是否在单个SessionFactory中是线程安全的?

时间:2018-01-18 20:04:41

标签: .net database multithreading nhibernate fluent-nhibernate

我的应用程序使用

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

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

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

1 个答案:

答案 0 :(得分:1)

查看https://blog.jessfraz.com/post/ips-for-all-the-things/Generate()类的IncrementGenerator方法使用MethodImpl属性和MethodImplOptions.Synchronized选项进行修饰。这个source访问该方法是同步的,因此是线程安全的。