Использование столбца Guid Version в NHibernate

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

Любые идеи о том, как это можно сделать, бегло или иначе, будут оценены. Мы будем рады взломать исходный код, если его удастся заставить работать.


person Alex    schedule 09.11.2010    source источник
comment
Что происходит с гидом при создании следующей версии? Увеличить его на один байт в конце? Guid.empty не сохранен?   -  person Paco    schedule 09.11.2010
comment
Я полагаю, вы создадите новый Guid? Что-то вроде типа данных timestamp.   -  person dotjoe    schedule 10.11.2010


Ответы (2)



Проверь это...

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

person dotjoe    schedule 09.11.2010