私はこの投稿のタイトルが何人かの人々をうんざりさせなければならないことを知っています。私は2011年12月からRavenDBを使用していますが、ドキュメントDBの使用に適合しない方法でデータをモデル化していることに気付きました。まず、私は完全にそれを理解します。第二に、私の現在の状況を踏まえて、以下のシナリオを正しく機能させる方法があることを望んでいます。
シナリオ:データベース内の特定のFooドキュメントを削除したい。ただし、そのドキュメントが別のドキュメントによって参照されている場合は、削除したくありません。だから、私はこれをしました:
public void Delete(Foo foo)
{
VerifyFooNotUsedByBar(foo); // Make sure no bars reference this foo
VerifyFooNotUsedBySnuh(foo); // Make sure no snuhs reference this foo
// What happens if some other user causes this foo to be referenced
// by a bar, right now?
new GenericData().Delete(foo);
}
ただし、これは機能します... fooをチェックした後、他の何かによってfooが参照される可能性があります。このメソッド全体が完了するまで、他の変更をロックする方法はありますか?
答えが「いいえ。この方法でドキュメントDBを使用することで自分自身を台無しにした」であるかどうかはわかります。現在の問題を回避する方法があることを願っています。