2012-02-12 6 views
1

Raven DBで2つの文書を削除したばかりです。これにより、他のドキュメントで参照されていた問題が発生しました。 Ravenにカスケード削除のバンドルがあることはわかっていますが、別のドキュメントで参照されている場合は削除を禁止する方法を探しています。これを行う標準的なRavenDBの方法がありますか?または、ドキュメントが参照されているかどうかを確認するために、すべてのドキュメントをループする必要がありますか?RavenDB使用しない場合は削除しない

答えて

1

ボブ、残念ながら、データベース自体はドキュメント間の関係がわからないので、残念ながらこれを行う標準的な方法はありません。

したがって、ユーザーがこれらのドキュメントを削除できないようにしたい場合は、現在のドキュメントを参照する他のドキュメントがあるかどうかを確認する必要があります。

+0

ありがとう、ダニエル。私が持っているドキュメントの種類ごとに、多くの個別のクエリを実行する必要があるかどうかを知っていますか?または、削除するドキュメントのインスタンスを返すクエリが1つありますか? –

+0

申し訳ありませんが、私はこの質問を理解していません。あなたは説明しようとすることができますか? –

+0

特定のドキュメントIDが複数回存在するかどうかを調べる* 1つの*クエリを実行できますか?複数ある場合は、別のドキュメントによって参照されていることがわかります。それ以外の場合は、削除するドキュメントを参照するかどうかを確認するために、各ドキュメントタイプごとに個別のクエリ(クエリ)を実行する必要があります。 –

1

Daniel氏によると、RavenDBはドキュメント間の関連付けについて知らないため、これをそのままでは実行できません。

ただし、独自のバンドルを実装して、delete trigger機能を使用すると、削除を拒否/許可することができます。

このルートを終了する場合は、Cascading Deleteバンドルがどのように実装されているかを見てください。あなたはちょうど反対をする必要があります。

+0

Ooooooh ...それは改善する興味深い機会かもしれません。私はそれを確認する必要があります。ありがとう! –

+0

削除トリガーリンクが壊れています。あなたはより良いものを持っていますか? –

+0

申し訳ありません。http://old.ravendb.net/documentation/triggers/read –

関連する問題