私は統合テストに取り組んでいます。ravendb をストアとして NServiceBus Saga を使用しているため、統合テストのために、テスト ケースごとに raven ストア内のすべてのドキュメントを削除する必要があります。これは NServiceBus サガ ストアであるため、Raven Db のドキュメント タイプは統合テストでは不明です。基本的に、すべてのドキュメント (任意のタイプ) を読み取り、それらを削除する必要があります。特定のデータベースからすべてのドキュメントを取得するために、ravendb セッションでクエリを作成することを楽しみにしています。Raven Db Query メソッドを確認すると、ドキュメントのタイプが必要です。一方、データベース内のすべてのドキュメントをタイプなしでクエリする必要があります。参考までに、これは統合テストなので、raven store には多くのレコードがありません。したがって、パフォーマンスは問題ではありません。
これが私が実行しようとしているクエリです。
"from doc in docs let DocId = doc[\"@metadata\"][\"@id\"] select new {DocId};"
解決策 1 :
また、上記のクエリのインデックスを作成しようとし、DeleteByIndex を実行しました。これにより、データベース内のすべてのドキュメントが実際に削除されます。ただし、特定のテスト ケースでは機能し、別のテスト ケースでは「Stale Index」という例外をスローします。古い例外を回避するために、コードがインデックスが完了するまで待機できるという解決策も見つけました。または、allowstale を true に設定して、この例外を回避します。すべてのインデックス作成を行う代わりに、すべてのドキュメントを取得して削除するためのクエリを作成できないのはなぜだと思いました。
解決策 2: ravendb ドキュメント フォルダーを削除する別の解決策を見つけました。NServiceBus Windows プロセッサの実行中にデータベースが削除されると、NServices バスが例外をスローするため、これは私の状況では機能しません。これにより、統合テスト ケースが壊れます。統合テストがravendbマシンとは異なるマシンで実行されるもう1つの理由。そのため、統合テスト ボックスは ravendb ボックスのフォルダーにアクセスできない場合があります。
これらはすべて、データベースからすべてのドキュメントを取得して削除するためのクエリを作成しようとしている理由です。
どんな助けでも大歓迎です。