2012-01-16 36 views
0

我在VS2010中使用EF 4.0。我有2個客戶運行我的應用程序。 當我將更改保存在一個客戶端中時,我在SQL服務器中看到它們,但第二個客戶端看不到它們。 我需要重新啓動應用程序才能看到更改。 我使用數據層的所有數據庫的東西,我離開我的連接打開所有的時間(建議在我讀一些帖子)可能是問題?任何解決方法我無法再從頭開始寫DL。當你改變它在其他方面實體框架savechanges - 無法看到其他客戶端中的更改

10X

+0

你爲什麼要斷開連接?這聽起來不像你應該做的事情。 – BrokenGlass 2012-01-16 14:12:50

+0

你提到的實際「數據層」是什麼?它是在內部網上的sql服務器還是本地的sql express數據庫? – OmegaMan 2012-01-16 14:14:05

回答

4

默認情況下,如果一個實體被加載到實例在查詢數據庫時返回的實例將包含上述實體的一組實體。

您需要將MergeOption設置爲OverwriteChanges以獲取數據庫中的更改。

context.Products.MergeOption = MergeOption.OverwriteChanges; 
var products = context.Products.Where(/**/); 

它更好地創造短暫的上下文以避免這樣的問題。

+0

我是否需要執行「context.Products.MergeOption = MergeOption.OverwriteChanges;」每次調用數據庫之前還是可以設置一次? – Kulpemovitz 2012-01-16 14:36:12

+0

@Kulpemovitz所有後續查詢將受到影響。所以要小心,你可能不會一直想要這樣的設置。 – Eranga 2012-01-16 14:38:43

+0

那麼,我需要客戶端顯示相同的數據。這是一個生產管理應用程序。什麼是「所以小心」最糟糕的情況? – Kulpemovitz 2012-01-16 17:48:18

1

EntityFramwork沒有更新數據。要獲得新的狀態,您必須重新創建上下文並再次加載所有數據。

相關問題