0

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ですか?

4

2 に答える 2

2

IDで複数のドキュメントをクエリしようとしているようです。Ravenでは、IDによるクエリは推奨されていません。代わりにそれらをロードしてください。複数のIDを使用する過負荷があります。

foos = session.Load<Foo>(ids);

これがIdではなく他のプロパティである場合は、item.In(list)ではなくを使用しますlist.Contains(item)

于 2012-12-03T17:36:00.303 に答える
1

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();
    }
于 2012-12-04T15:51:43.997 に答える