2012-01-26 44 views
0

我有一個User類和相關的UserRequest,所以VS設計器爲我創建了User.UserRequests。LINQ to SQL:除非調用SubmitChanges,否則DataContext更改不會被反映

偶爾我執行任務,以刪除非活動UserRequests如下:

Dim requests = From req In db.UserRequests Where req.LastActivity < DateTime.Now.Subtract(New TimeSpan(0, 0, KeepRequestInterval)) Select req 


For Each req In requests 

    db.UserRequests.DeleteOnSubmit(req) 
Next 

當我訪問User.UserRequests,刪除請求仍然存在,除非我叫取出之後,db.SubmitChanges(),前訪問User.UserRequests。

有什麼辦法可以強制從User.UserRequests中刪除已刪除的請求,而無需額外調用SubmitChanges()?

回答

3

不,這是設計。不管你對物體有多少變化http://msdn.microsoft.com/en-us/library/bb399378.aspx

,改變 只發到內存中的副本。您沒有更改數據庫中的實際數據。在您明確調用DataContext上的SubmitChanges之前,您的更改不會傳輸到 服務器。

只有在Submitchanges後您的刪除將被刪除。

+0

我同意,真正改變數據庫的唯一方式是通過的SubmitChanges()。在此之前,如果SubmitChanges()從不調用,那麼這些事務處於隊列中,而這個隊列沒有制定。 – 2012-01-26 22:26:28

+0

如何從集合中手動刪除它們?這是一個很好的做法嗎? – SharpAffair 2012-01-26 22:34:16

+0

呃,你試圖達到什麼樣的基本目標 – Pleun 2012-01-27 09:25:05

相關問題