2011-11-30 28 views
2

你好,我使用實體框架/ Vb.net 2010。 我有BindingSource的實體的形式,我想知道的是這2個指令之間的區別:從context.MyTable1 t其中...一些條件 選擇•「ToList」如何改變我的EntityFramework查詢的輸出?

  1. MyBindingSource.datasource =

  2. MyBindingSource.datasource =(從context.MyTable1 t其中...一些條件 選擇噸).ToList

的問題是,當使用它們中的每一個,當添加,刪除或修改綁定源的記錄時(例如,當使用第二條指令時,當我刪除實體上的某些內容時,該記錄仍然存在於綁定源上,直到我關閉並重新打開表單或我應該從bindingsource刪除記錄,如果我使用第一條指令,當我從實體中刪除bindingsource即刻更新)

請問您能向我解釋一下嗎?我應該使用哪些應用程序? 謝謝。

回答

0

首先一個返回一個IEnumerable(OfType T)和第二個的列表(OfType T)

4

第一返回的查詢時,可向其中添加更多的where子句,訂購等的結合,爲所述數據源將導致它執行。這將保持與實體的鏈接,以便綁定源可以自動更新。

第二個執行查詢並返回對象列表。然後綁定到數據源。此列表與實體分開,因此需要重新閱讀,這會在您重新打開表單時發生。

+0

謝謝你,但是閱讀你的答案,我發現了一個奇怪的情況,當使用第二條指令。如果我添加或刪除實體上的記錄,bindingsource不立即更新,但如果我更新綁定源記錄數據庫更新instant.And如果我嘗試在綁定源添加記錄時,當我使用第一條指令有時我得到一個錯誤「項目不能添加到只讀或固定大小的列表」 – alex