RavenDBからこのメッセージが届きました
サポートされていないメソッド:含む
このコードの場合:
using (var d = DataLayer.RavenDB.d.OpenSession())
{
foos = d.Query<Foo>().Where(foo => ids.Contains(foo.Id)).Skip(i * 10).Take(10).ToList();
}
リストを取得するにはどうすればよいfoos
ですか?
IDで複数のドキュメントをクエリしようとしているようです。Ravenでは、IDによるクエリは推奨されていません。代わりにそれらをロードしてください。複数のIDを使用する過負荷があります。
foos = session.Load<Foo>(ids);
これがIdではなく他のプロパティである場合は、item.In(list)
ではなくを使用しますlist.Contains(item)
。
IDのリストに基づいてドキュメントをロードする場合は、Mattが提案したソリューションを使用してください。パフォーマンスに関しては、Load()が最善のアプローチです。
しかし、それでもクエリを使用して(いくつかの場所を使用して)取得したい場合は、次のようにコードを変更してください
using (var d = DataLayer.RavenDB.d.OpenSession())
{
foos = d.Query<Foo>()
.Where(foo => foo.Id.In<string>(ids))
.Skip(i * 10)
.Take(10).ToList();
}