在NHibernate中使用Guid Version列

时间:2010-11-09 14:28:05

标签: sql-server nhibernate fluent-nhibernate version

我们正在使用遗留数据库,该数据库使用SQL server uniqueidentifier列进行并发,因此我们需要使用Guid作为版本列。知道如何在NHibernate中实现这个目标吗?

我们目前正在使用Fluent NHibernate定义我们的映射作为Guid类型属性,使用此片段称为ConcurrencyId

Version(x => x.ConcurrencyId)

这会在创建会话时导致以下错误

System.InvalidCastException : Unable to cast object of type 'NHibernate.Type.GuidType' to type 'NHibernate.Type.IVersionType'.

关于如何做到这一点,流利或其他方面的任何想法将不胜感激。如果可以使用,我们很乐意破解来源。

2 个答案:

答案 0 :(得分:2)

您可以尝试实现实现NHibernate.UserTypes.IUserVersionType的自定义类型。 (我认为这个建议可能与你使用的NHibernate的新版本有关。)

答案 1 :(得分:1)

检查一下......

http://ayende.com/Blog/archive/2009/04/15/nhibernate-mapping-concurrency.aspx

以及版本属性的文档

http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-version

看起来你不能使用Guid了。也许只是将其映射为属性并自行处理版本检查。