请原谅我提出了一个可能有完全明显答案的问题 (RTFM),但是如何使这里提到的“版本属性”真正起作用?此处提供的 Ayende 网站链接和此处的 github 存储库暗示这是可能的。这里还有另一个 SO 链接,它描述了相同的问题,但并没有真正发布明确的解决方案。我也无法在与此功能相关的发行说明或文档中找到 NSB 示例代码或任何内容。但是,对于使用多个工作线程和 ReadCommited 运行 sagas 的任何人来说,这都是至关重要的知识。
是否真的像将一个名为 Version 的整数属性添加到您的 saga 数据类和一个时间戳/行版本到您的 saga 数据表一样简单?这真的在某个地方的样本中,我只是没有找对地方吗?
此外,根据我看到的评论,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 上打开了这个问题,经过一番来回后,尝试了一个包含修复的开发版本并让它工作。官方修复在 NServiceBus.NHibernate v4.4.0 中发布。
我对答案的变体是将其与时间戳 SQL 列一起使用:
[RowVersion]
public virtual byte[] Version { get; set; }
经过几天的锤击,它看起来不错。