2014-03-07 60 views
1

我有一個winforms應用程序與詳細信息形式,datagridview和bindingnavigator都綁定到相同的數據源。我正在使用實體框架(數據庫第一)。用戶在datagridview中處理記錄組;一次有數百個,但可能有數千個。綁定導航器顯示當前有多少記錄加載到內存中。如何限制大數據源上的dbcontext的大小綁定到WinForms控件

細節表單被禁用,直到他們點擊「編輯」按鈕。當他們決定編輯時,是否有一種將dbContext限制爲單個記錄的實用方法?在我看來,dbcontext與綁定到控件的數據源綁定在一起。

示例我找到了諸如msdn.microsoft.com/en-us/data/jj682076.aspx的解釋,說明如何使用dbcontext選擇*整個實體列表,將它們綁定到datagridview,並使用context.SaveChanges ()來更新數據庫。我還沒有找到一個很好的例子,說明如何在使用winforms中的多個記錄時將上下文限制爲單個記錄。

回答

1

當爲了查看目的而加載時,您不應該將EF對象綁定到dbContext。當您需要執行您的CRUD操作時,應使用dbContext應該* 只有。上下文不應該打開很長一段時間。

你應該在創建你的dbContext的地方發佈信息,你應該在加載數據後關閉你的上下文。

+0

這很有道理。當用戶選擇一條記錄進行編輯時,我可以調用數據庫並使用上下文獲取單個記錄。但我不理解上下文將如何識別在細節表單中所做的更改,因爲表單已經綁定到更大的記錄組。我的問題有意義嗎? – Jeff

+0

是的,這是對於簡單的網格...如果您要對大型數據集進行大規模更新,那麼這將是一個嚴重的性能問題。一般來說,你不需要,也不應該像這樣使用dbcontext。但如果你有一個簡單的網格簡單的網頁,那麼我想用它。 MS示例過於簡單,它們還顯示代碼從視圖訪問數據庫的位置......另一個不適用於高性能系統。 –

+0

同意。只需要找到一個如何以正確的方式完成的示例:-) – Jeff