在LINQ to Entities中,我將存儲過程的結果集映射到實體。Linq to Enities:存儲過程調用後結果集未得到更新
在存儲過程中,我執行一些更新語句並通過運行SELECT查詢並將結果集映射到實體來返回結果集。
數據庫行得到正確更新,但返回的實體未反映這些更改。相反,更新之前的數據正在返回?
有什麼建議嗎?
謝謝。 Abe
在LINQ to Entities中,我將存儲過程的結果集映射到實體。Linq to Enities:存儲過程調用後結果集未得到更新
在存儲過程中,我執行一些更新語句並通過運行SELECT查詢並將結果集映射到實體來返回結果集。
數據庫行得到正確更新,但返回的實體未反映這些更改。相反,更新之前的數據正在返回?
有什麼建議嗎?
謝謝。 Abe
其實,原來的DataContext.Refresh方法在 http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.refresh.aspx
這裏是我的代碼解決我的問題:
db.Refresh(System.Data.Objects.RefreshMode.StoreWins, affectedProjectTasks);
感謝馬克指着我正確的方向! Abe
上述實體是否已經緩存在上下文中? (即,您是否已經查詢過它們?)
如果是這樣,身份管理器將始終讓您回到原始對象(而不是在同一上下文中創建具有相同身份的新對象)。因此,對於已經被其他查詢讀取的數據,只考慮身份/主鍵字段。
我相信如此。我查詢一個對象,然後調用一個對該對象執行更新的存儲過程。 有什麼辦法強制身份管理器在存儲過程被調用後重新加載數據?基本上,我需要從存儲過程返回的對象來反映更新。 謝謝! – Abe 2009-11-10 05:12:51
我不知道,對不起。 – 2009-11-10 05:15:03