Использование столбца Guid Version в NHibernate - PullRequest
4 голосов
/ 09 ноября 2010

Мы работаем с устаревшей базой данных, в которой для параллелизма используются столбцы uniqueidentifier сервера SQL, поэтому нам необходимо использовать 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 ]

2 голосов
/ 09 ноября 2010

Вы можете попробовать реализовать пользовательский тип, реализующий NHibernate.UserTypes.IUserVersionType. (Я думаю, что это предложение может относиться к более новой версии NHibernate, чем вы используете.)

1 голос
/ 09 ноября 2010

Отметьте это ...

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 для этого.Может быть, просто сопоставить его как свойство и обработать проверку версий самостоятельно.

...