如何配置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。
任何帮助将不胜感激。
答案 0 :(得分:1)
默认情况下,我认为nhibernate使用guid.comb策略生成应该订购的guid。它们不像NEWSEQUENTIALID()生成的那样明显,但仍然应该被订购。
请查看以下文章:
http://nhibernate.info/blog/2009/05/21/using-the-guid-comb-identifier-strategy.html