我们正在使用遗留数据库,该数据库使用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'.
关于如何做到这一点,流利或其他方面的任何想法将不胜感激。如果可以使用,我们很乐意破解来源。
答案 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了。也许只是将其映射为属性并自行处理版本检查。