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
?
看起来您正在尝试按 id 查询多个文档。在 Raven 中不建议按 ID 查询。而是加载它们。有一个需要多个 Id 的重载。
foos = session.Load<Foo>(ids);
如果这是一些其他属性而不是 Id,您将使用item.In(list)
而不是list.Contains(item)
.
如果您想根据 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();
}