異種ドキュメントを返すインデックスにクエリを実行する場合、結果セットを操作する最善の方法/最も広く使用されている/最も広く受け入れられている方法は何ですか?
明白な答えは、それらを共通の基本型としてロードしてから、より具体的な型にアップキャストすることですが、これはスケーラブルではないようです。
これが関連していることがわかる一般的なシナリオは、検索です。
よく見ると、結果がすでにPOCO になっていることがわかります。Raven-Entity-Name
これらは、メタデータに基づいてレイヴン クライアントによってハイドレートされます。
確かに、共通の基本型またはインターフェイスを使用できます。無関係なデータがたくさんある場合は、object
. その後、アプリでそれらをフィルタリングして適切にキャストするか、そのまま使用することができます。
実験としてこれを試してください。関連のない 3 つの別個のエンティティ タイプのいくつかのドキュメントを保存し、マルチマップ バックします。または、複数の異なるドキュメント タイプを返す任意のインデックスに反対します。一体、スタジオのビルドでさえRaven/DocumentsByEntityName
それを行うべきです. 次のように、このインデックスに対してクエリを実行します。
var results = session.Query<object>("Raven/DocumentsByEntityName");
(通常は、古くない結果、ToList などを待ちます)
ブレークポイントを設定し、返された結果を確認します。それらはすべて実際に正しい型であり、返されたドキュメントに応じて型が異なるだけです。あなたが彼らとやりたいことをしてください。