0

Raven DB 给了我这条信息

不支持的方法:包含

对于此代码:

 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() 是最好的方法。

但是如果您仍然想使用查询(使用一些 where contiions)来获取它,请像这样更改代码

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 回答