在 NHibernate 中使用 Guid Version 列
我们正在使用一个旧数据库,该数据库使用 SQL Server uniqueidentifier 列来实现并发,因此我们需要使用 Guid 作为版本列。知道我们如何在 NHibernate 中实现这一目标吗?
我们目前正在使用 Fluent NHibernate 定义映射作为名为 ConcurrencyId 的 Guid 类型属性,使用此代码段
Version(x => x.ConcurrencyId)
这会在创建会话时导致以下错误
System.InvalidCastException:无法将“NHibernate.Type.GuidType”类型的对象转换为“NHibernate.Type.IVersionType”类型。
任何关于如何流畅或以其他方式完成此操作的想法将不胜感激。如果可以的话,我们很乐意破解源代码。
We are working with a legacy database that uses SQL server uniqueidentifier columns for concurrency hence we need to use a Guid as a version column. Any idea how we could achieve this in NHibernate?
We're currently defining our mapping using Fluent NHibernate as a Guid typed property called ConcurrencyId using this snippet
Version(x => x.ConcurrencyId)
This results in the following error when creating a session
System.InvalidCastException : Unable to cast object of type 'NHibernate.Type.GuidType' to type 'NHibernate.Type.IVersionType'.
Any ideas on how this could be done, fluently or otherwise would be appreciated. We're happy to hack the source if it can be made to work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试实现自定义类型,实现
NHibernate.UserTypes.IUserVersionType
。 (我认为这个建议可能适用于比您正在使用的新版本的 NHibernate。)You could try implementing a custom type implementing
NHibernate.UserTypes.IUserVersionType
. (I think this suggestion may pertain to a newer version of NHibernate than you are using.)检查这个...
http://ayende.com/ Blog/archive/2009/04/15/nhibernate-mapping-concurrency.aspx
和版本属性的文档
http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-version
看起来你不能为此使用指南。也许只需将其映射为属性并自行处理版本检查。
Check this...
http://ayende.com/Blog/archive/2009/04/15/nhibernate-mapping-concurrency.aspx
and the docs for the version property
http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-version
Looks like you can't use a Guid for this. Maybe just map it as a property and handle the version checks yourself.