2012-01-10 29 views
3

我有一個url過濾器,如:t1?$ filter = ID eq 1 & $ expand = t2/t3/t4/t5/t6ODATA EXPAND不能正常工作

現在,當我運行這個查詢作爲使用上下文的第一個查詢時,我得到了一切!當我從另一個頁面運行同一個頁面並且它是在使用相同的objectcontext的前一個頁面之後運行的第二個查詢時,查詢將在t3停止擴展!即使對象id顯然存在,該對象也是null。數據存在!所以這裏真的很奇怪。注意:我使用的是單例對象上下文工廠類,因此每個頁面都實例化自己的對象上下文以用於執行CRUD操作。

回答

9

假設您使用WCF DS客戶端庫(DataServiceContext和相關類),那麼很可能是由於客戶端上的DataServiceContext.MergeOption設置。缺省值爲AppendOnly,這意味着如果給定實體的實例已經存在於客戶端上,則來自服務器的新數據將不會更新它(這是爲了防止查詢覆蓋對客戶端所做的可能更改)。您可以將MergeOption更改爲OverwriteChanges,然後使用服務器值。 (它甚至適用於導航屬性,這就是爲什麼擴展看起來不起作用,但實際上服務器確實將數據發送回客戶端,但客戶端將其丟棄)。

+0

有趣。我會去工作,立即嘗試。我假設這個選項是在它配置每個實體的CRUD權限的服務初始化中? – 2012-01-11 06:03:13

+0

它的工作!顯然我需要熟悉這些選項 – 2012-01-11 07:44:13