NHibernate中身份和增量之间有什么区别?

时间:2017-09-12 15:11:58

标签: c# nhibernate fluent-nhibernate

我在Access中使用我的数据库,我希望按ID进行自动增量。

我应该使用哪一个?

Id(x => x.Id).GeneratedBy.Increment().Column("COLUMN_NAME");

Id(x => x.Id).GeneratedBy.Identity().Column("COLUMN_NAME");

1 个答案:

答案 0 :(得分:2)

来自Hibernate Docs(Nhibernate是Java项目的移植)

  

<强>增量

     

生成long,short或int类型的标识符,这些标识符仅是唯一的   当没有其他进程将数据插入同一个表时。不要   在集群中使用。

     

<强>身份

     

支持DB2,MySQL,MS SQL Server,Sybase和中的标识列   HypersonicSQL。返回的标识符的类型为long,short或int。

     

<强>序列

     

使用DB2,PostgreSQL,Oracle,SAP DB,McKoi或a中的序列   Interbase中的生成器。返回的标识符类型为long,short   或int

     

<强>天然

     

根据&gt;底层数据库的功能选择标识,序列或hilo。

所以 增量 应该用于小场景,增量是在内存中计算的。

Identity \ Sequence \ Native 使用数据库的本机功能来计算增量。

由于您使用Access可能是第一种情况,但我建议您迁移到MS SQL Server Express以获得更好的性能,安全性,可用性和扩展性。它是免费的,迁移应该是无痛的。