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