我原本以爲這是一個INotifyPropertyChanged /綁定問題,因爲我不知道如何調試silverlight部分。所以我不得不把一個消息框放在foreach循環中,並在數據返回後查看這些值。事實證明,我無法從服務獲取更新的數據。我使用該服務對服務器上的數據進行一些更新,以及何時返回調用以重新加載數據。這部分服務正在返回正確的數據(我使用斷點進行了驗證,以便查看數據結果持有的情況)。但silverlight方面沒有得到正確的數據。這是相關的代碼。WCF RIA服務返回數據不匹配服務的兩側
public IQueryable<OurClass> GetItems(string condition)
{
var result = from items in context.OurClass
where item.value == condition
select item;
return result; //had my breakpoint here and the values were the correct updated values
}
/
Context.Load<OurClass>(Context.GetItemsQuery(condition)).Completed += new EventHandler(Context_LoadCompleted);
/
private void Context_LoadCompleted(object sender, EventArgs e)
{
IEnumerable<OurClass> result = ((LoadOperation<OurClass>)sender).Entities;
//This is where I put a MessageBox to view the returned results and the data was different
//than what was contained in the other result
}
任何想法可能導致此?接下來我應該看看什麼?
編輯:
一些示例數據OurClass.OurProperty將等於「測試」在服務器端,但一旦在客戶端上收到了將等於這是舊值「發展」。 IEnumerable將保存新添加的記錄並且沒有刪除的記錄。任何以前存在的將包含舊的屬性值而不是新的值。
一個原因可以對數據進行不同的是,如果在幾個項目的鍵列是相同的。如果你返回一組'OurClass',並且鍵列是一個'int',那麼確保返回的每個項目都有一個唯一的'int'鍵。 (請在服務方面檢查,而不是在消費方。) – EtherDragon
不確定您的意思是按鍵列。我們的主要關鍵是Id財產和Guid。默認情況下,它們不能相同,所以不能是你所說的。我明天也會進行調查。謝謝你的提示。 –
每個數據傳輸對象作爲一個Key(由屬性上的[Key]屬性表示)如果使用EF,則從數據庫爲您生成該關鍵字,查看'OurClass'的類定義並確定哪個財產被標記爲'[Key]' – EtherDragon