Простите меня за вопрос, на который может быть совершенно очевидный ответ (RTFM), но как сделать так, чтобы «свойство версии» упоминалось здесь действительно работают? Предоставленные ссылки на сайт Ayende здесь и репозиторий github здесь намекают, что это возможно. Существует также другая ссылка SO здесь, которая описывает ту же проблему, но не действительно есть четкое решение. Мне также не удалось найти пример кода NSB или что-либо в примечаниях к выпуску или документации, связанной с этой функцией. Тем не менее, это критически важное знание для всех, кто запускает саги с несколькими рабочими потоками и ReadCommited.
Действительно ли это так же просто, как добавить целочисленное свойство Version к вашему классу данных саги и метку времени/строку к вашей таблице данных саги? Это действительно где-то в образцах, и я просто не там ищу?
Кроме того, основываясь на комментариях, которые я видел, похоже, что в NSB 3.x есть ошибка, связанная с этой функцией. Нужно ли мне обновляться до 4.x, чтобы получить эту функцию, или есть простой способ заставить ее работать в 3.x?
Спасибо!
ИЗМЕНИТЬ:
Используя ответ Джона Саймона ниже, я столкнулся с ошибкой, первоначально используя следующие версии NSB:
NHibernate: 3.3.3.4001
NServiceBus: 4.3.1
NServiceBus.Host: 4.3.1
NServiceBus.Interfaces: 4.3.3
NServiceBus.NHibernate: 4.3.0
NServiceBus.StructureMap: 4.3.1
Я открыл эту задачу на github и после некоторых возвратов попробовал build, содержащий исправление, и заставил это работать. Официальное исправление было выпущено в NServiceBus.NHibernate v4.4.0.
Мой вариант ответа состоял в том, чтобы использовать это со столбцом SQL с отметкой времени:
[RowVersion]
public virtual byte[] Version { get; set; }
Потратив пару дней на это, он выглядит хорошо.