NHibernate和MS SQL函数NEWSEQUENTIALID()生成有序的GUID

时间:2013-11-15 13:55:43

标签: c# sql sql-server nhibernate fluent-nhibernate

如何配置NHibernate 3.3.1(或其他某些版本)以允许Microsoft SQL 2008 R2为数据类型为uniqueidentifier且默认约束为NEWSEQUENTIALID()的表生成主键值(已订购的guid)?< / p>

我的测试显示我可以将Id(PK)映射设置为GeneratedBy.Guid.Native(),但这将调用select newid()并且不会使用函数NEWSEQUENTIALID()。

我可以使用Id映射GeneratedBy.GuidComb()生成有序的guid客户端,但是我担心生成相同GUID的同一进程中的多个线程。

我的应用程序需要跨主动/主动数据中心进行数据库复制,我想使用在MS SQL服务器(几个活动数据中心)生成的有序guid作为主键。

我看到这篇文章,

Nhibernate Identity mapping when using "newsequentialid" in DB

但它似乎忽略了答案,显示如何设置NHibernate以使用NHibernate生成的GUId。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

默认情况下,我认为nhibernate使用guid.comb策略生成应该订购的guid。它们不像NEWSEQUENTIALID()生成的那样明显,但仍然应该被订购。

请查看以下文章:

http://nhibernate.info/blog/2009/05/21/using-the-guid-comb-identifier-strategy.html