天天看點

LINQ-to-SQL那點事~LINQ-to-SQL中的資料緩存與應對

在linq to sql作為底層資料源時,我們進行一個linq傳回結果集的操作,這沒有問題,不過,當你進行update操作之後,再使用linq傳回結果集時,你會發現,它傳回的

資訊是不正确的,或者總是發生變化的,這是為何?

事實上,這是由于DataContext本身的機制所決定的,它本身就有緩存機制,當你從資料庫把資訊得到時,然後修改它,再進行儲存,如果你再把資訊取出來,這時,你會從datacontext的緩存中得到,而不是真正的資料庫裡得到,這個datacontext緩存如果想要解決,有幾種方法:

1  datacontext不要共享化(不要靜态化,不要單例),使用私有datacontext,即每個操作,使用一個新的datacontext。

2  使用派生類,将查詢結果儲存到實體的子類中,也可以避免這種緩存資料的産生。

下面是具體的代碼: