2015-05-12 55 views
2

我很新,所以原諒我不知道如何正確地說出這個。實體框架訪問數據庫方法

我已經安裝了一個相當大的數據庫實體框架,並試圖學習如何操縱數據庫中的表。

我的第一種方法工作,但我遇到了一個錯誤。它會將數據加載到datagridview中,但是當滑動欄以查看不在屏幕上的表時,它會引發錯誤。這是觸發錯誤的過程:

using (var context = new MydbEntities()) 
{ 
    var query = (from a in db.Configurations 
       select a); 

    var result = query.ToList(); 
    dataGridView1.DataSource = result; 
} 

現在,如果我改變的第一行MydbEntities db = new MydbEntities();我沒有得到一個錯誤。我試圖關注在線教程,但我想也許有人可以幫助我理解這兩者之間的差異。

+1

你得到了什麼錯誤? –

+2

我們可能有錯誤的細節嗎? –

+0

「配置」是否有任何相關實體? –

回答

-1

基本上你遇到了lazy-load和事實,當你試圖查詢下一批記錄時,Context被處置了。

您在這裏有serveral的選項,在我看來,最好的是:

  1. 使用EntityDataSource。這樣DataControl將負責EF上下文實例化和處理。 (MSDN有相當不錯的規格)。

  2. 執行自定義ObjectDataSource。在ObjectDataSource方法中使用EF上下文,在需要時實例化並處理它。 (This article關於這個話題有點過時,但你仍然可以得到這個想法)。

+0

究竟是什麼表明這是解決方案? uberhaupt有什麼問題? –

+0

謝謝vittore,我認爲這可能是。我做的第二種方法有問題嗎?基本上用'MydbEntities db = new MydbEntities()'替換'using(var context = new MydbEntities())';'似乎消除了這個錯誤。我只是想確保它不會導致其他問題。 –