RavenDBでは、プロパティのIDを別のプロパティ内で取得できますか?たとえば、FooにBarオブジェクトのリストがあり、各BarオブジェクトにSnuhIdプロパティがある場合、各SnuhプロパティのIDを取得するIncludeを使用できますか?RavenDB - ルート以外のレベルのプロパティ内でルートプロパティのIDを取得
以下のクエリを試しましたが、RavenDBの例外があります。インデックスが範囲外です。このクエリでは、ApplicationServerはルート要素であり、ApplicationsWithOverrideGroupオブジェクトのリストを持っています。これらの各オブジェクトには、ApplicationIdプロパティがあります。これは、インクルードで取得したいApplicationIdです。これらのアプローチの
IEnumerable<ApplicationServer> appServers = QueryAndCacheEtags(session =>
session.Advanced.LuceneQuery<ApplicationServer>()
.Include(x => x.CustomVariableGroupIds)
// This is the line I'm trying to make work:
.Include(x => (from item in x.ApplicationsWithOverrideGroup select item.ApplicationId).ToList())
).Cast<ApplicationServer>();
のどちらかがが動作しているように見えます。徹底的にテストする必要があります。
.Include(x => x.ApplicationsWithOverrideGroup)
または
.Include(x => x.ApplicationsWithOverrideGroup[0].ApplicationId)
その最初のオプションは確かに、その後、(インクルードで指定されたプロパティを、動作している場合)、その中にIDプロパティが含まれます。そうですか?
これらの両方が実際に動作しているかどうかはわかりませんが、そのように見えます。両者がうまくいくとすれば、他のものよりも優れているのだろうか...。
NumberOfRequestsが増えています。これは、セッションに含まれているものの代わりに、DBへのトリップ回数が増えていることを意味しています。
ない私はあなたが何をしようとして理解し、しかし、あなたが言うならばそれが動作を確認してください。これに
:不思議なことに、私はこれを変更しなければなりませんでした。 :) 1つの副言は、すべてのクエリで.Cast()を呼び出す理由はありません。 –
私は自分がやっていることをいつも理解していません。 :)実際には、セッションではなくQueryAndCacheEtags()で呼び出すので、キャスト()を呼び出す必要があります。 QueryAndCacheEtags()は、ApplicationServerサブクラスではなく、EntityBaseを返します。 –