2009-01-27 53 views
2

我在WinForms(以及我猜測WPF)中使用Linq to SQL的一個主要問題是缺少對長時間運行的數據環境的支持,請參閱here具有長時間運行的對象上下文的Enitity Framework

問題是,您無法從數據庫獲取更新,只有在丟棄datacontext之前,您纔會獲得相同的舊記錄。對於一個Web應用程序來說,這是很好的,當頁面只在毫秒內活着時,但在Winforms應用程序中並沒有那麼好,因爲多個綁定控件都粘在舊的datacontext上並坐在用戶桌面上。

我的問題是否EF仍然有這個限制,或者你可以從EF得到更新的記錄而不會丟棄對象上下文?

回答

3

您可以使用ObjectContext.Refresh方法更新現有上下文。

+0

謝謝。實際上,您可以在Linq to SQL中使用db.Refresh(System.Data.Linq.RefreshMode.KeepChanges,myObjectsCollection),但它會爲每個需要刷新的單個對象發出單獨的選擇查詢。你碰巧知道ObjectContext.Refresh是否更有效率? – 2009-01-27 19:29:41