3
我有一个简单的GET方法,它返回的IQueryable,并且对查询的一些前提条件:的WebAPI和OData的 - 返回可查询与前提
[Queryable(HandleNullPropagation = HandleNullPropagationOption.False)]
public IQueryable<Message> Get()
{
using (var session = RavenStore.GetSession())
{
var messages = session.Query<Message>().Where(x => x.TargetUserId == this.User.Identity.Name || x.SourceUserId == this.User.Identity.Name);
return messages;
}
}
这是RavenDB,顺便说一句。我遇到的问题是,一旦执行,则用户ID替换为 “[EMPTY_STRING]”,所以实际的查询其运行是这样的:
“TargetUserId:[EMPTY_STRING] OR SourceUserId:[ EMPTY_STRING]]' 索引.....
这显然是错误的。
如果我正在返回List而不是IQueriable - 它工作正常,所以管道后面的内容会更改查询。有没有人有任何关于如何使这项工作的见解?
如果您首先将该名称放入本地变量,它会起作用吗? – 2013-03-07 01:58:30
是的,谢谢!有点意外:)好吧,我知道它与范围有关?在User.Identity被擦除后,IQueriable被触发,还是在不同的线程上运行? – Evgeni 2013-03-07 02:29:25
你可以让这个答案,以便我可以标记为这样吗? – Evgeni 2013-03-07 02:29:48