在我的應用程序中,我執行一個entityquery。如果我使用SQL事件探查器,捕獲生成的SQL查詢並手動運行它,它會給出我期望的結果。 例如RIA EntityQuery複製其中一個值匹配的行
Val Date
68 2011-05-31 00:00:00.000
48 2011-05-30 00:00:00.000
92 2011-05-29 00:00:00.000
52 2011-05-28 00:00:00.000
32 2011-05-27 00:00:00.000
32 2011-05-26 00:00:00.000
52 2011-05-25 00:00:00.000
81 2011-05-24 00:00:00.000
如果我堅持一個斷點在我的代碼,看看什麼LoadOperation.Entities包含,我注意到,當「瓦爾」數字對於一款入門已經出現(IE像上面52)那麼LoadOperation.Entities集合將使用前一個條目中的數據(值爲52),而不是實際的日期。 因此在上面的數據,我LoadOperation.Entities樣子(注意,日期,現在重複,似乎因爲「丘壑」之前已經發生)
68 2011-05-31 00:00:00.000
48 2011-05-30 00:00:00.000
92 2011-05-29 00:00:00.000
52 2011-05-28 00:00:00.000
32 2011-05-27 00:00:00.000
32 2011-05-27 00:00:00.000
52 2011-05-28 00:00:00.000
81 2011-05-24 00:00:00.000
有誰知道爲什麼發生這種情況?
我EntityQuery看起來像
var appDataQuery = context.GetVwKeyDatasQuery().Where(d => d.KPIDate <= OverViewDate && d.GELID == GelID && d.ClockworkID == ClockWorkID).OrderByDescending(d => d.KPIDate);
這產生正確的T-SQL,這當在SQL查詢分析器中執行返回正確的值。
代碼的其餘部分
LoadOperation lo = context.Load<vwKeyData>(appDataQuery);
lo.Completed += new EventHandler(LoadOperation_Completed);
的事件處理程序是
public void LoadOperation_Completed(object sender, EventArgs e)
{
LoadOperation<vwKeyData> histResults = sender as LoadOperation<vwKeyData>;
int _count = 0;
foreach (vwKeyData v in histResults.Entities)
{.......
至此histResults.Entities已經是不正確。任何幫助將不勝感激,因爲這是搞砸了我正在努力的一些圖表。
感謝
中號
曼森,這可能是因爲數據被EF緩存。 – Jethro
只是想通了。在我的模型中,日期字段未被設置爲關鍵字。由EntityQuery返回的行中的其他值可能非常合理,具有相同的值。唯一保證改變的是日期。一旦我將日期設置爲關鍵字,它就開始包含正確的數據。 – MJM