1

完全に明白な答え (RTFM) があるかもしれない質問をして申し訳ありませんが、ここで言及されている「バージョン プロパティ」を実際に機能させるにはどうすればよいでしょうか? こちらの Ayende のサイトへのリンクと、こちらの github リポジトリへのリンクは、これが可能であることを示唆しています。同じ問題を説明しているが、実際には明確な解決策が投稿されていない、この他の SO リンクもあります。また、NSB のサンプル コードや、この機能に関連するリリース ノートやドキュメントを見つけることもできませんでした。ただし、複数のワーカー スレッドと ReadCommited を使用して saga を実行する人にとっては重要な知識です。

バージョンと呼ばれる整数プロパティをサガ データ クラスに追加し、タイムスタンプ/行バージョンをサガ データ テーブルに追加するのと同じくらい簡単ですか? これは本当にサンプルのどこかにありますか?私は正しい場所を探していませんか?

また、私が投稿したコメントに基づいて、NSB 3.x にこの機能に関連するバグがあるようです。この機能を利用するには 4.x にアップグレードする必要がありますか? または 3.x で機能させる簡単な方法はありますか?

ありがとう!

編集:

以下のJohn Simonの回答を使用して、最初に次の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; }

数日間ハンマーで叩いた後、見栄えが良くなりました。

4

1 に答える 1

3

v3 では、サガにバージョン プロパティを定義するだけで済みます。

public virtual int Version {get;set;}

v4 では、デフォルトで "optimistic-all" 同時実行モデルが使用されます。カスタムの行レベルの同時実行が必要な場合は、v3 + 属性と同じことを行います。

[RowVersion]
public virtual int Version { get; set; }
于 2013-12-26T22:35:13.017 に答える