2010-04-19 67 views
13

我遇到此問題,在數據庫上更新字段(比如表MyTable中的Field3)後,MyTable.Field3(在C#中)仍然返回舊值。當數據庫中的數據發生更改時,LINQ to SQL不會更新

我懷疑有一些緩存......?

我該如何強制:
從數據庫中讀取數值?

更新MyTable類中的值?

或者有什麼我想念的?我是新來的LINQ

謝謝你提前。

回答

11
DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, entity); 

如果你想刷新你的整個實體集,最簡單的方法可能是創建一個新的DataContext並重新查詢一切。

+2

它引發此異常: 無法識別指定用於刷新的對象。 顯然記錄被改變使用 Context.SubmitChanges(); 我可以告訴記錄是否正在更新,如何在更新後立即刷新該記錄的值? – Aximili 2010-04-19 07:13:27

+0

任何地方有任何示例代碼?我甚至不知道我需要谷歌的條款,我應該搜索什麼?謝謝 – Aximili 2010-04-19 07:16:10

+3

當你調用SubmitChanges()時,你的對象應該會自己刷新。如果沒有,請檢查Linq to SQL數據模型中字段上的UpdateMode屬性,確保它設置爲「自動更新」。 – 2010-04-20 00:14:59

6

您誤解了模型。每次請求成員時,Linq to SQL都不會傳遞到數據庫。當您從數據庫中獲取對象時,它將作爲Linq to SQL對象存儲在內存中,並在此存在。在再次查詢數據庫之前,您不會獲得該對象的最新版本。

+0

我明白了,這就是我的想法,謝謝戴夫。那麼如何讓它同步內存中的值以匹配數據庫中的值呢? – Aximili 2010-04-19 02:50:58

+1

您可以從DataContext再次請求該對象。 – 2010-04-19 04:35:44

+0

你怎麼做那個羅伯特? – Aximili 2010-04-19 23:38:06

相關問題