2017-05-11 59 views
0

DbContextが破棄されたため、操作を完了できません。DbContextが破棄されているため、操作を完了できません。実行中のプログラムに影響する

誰かがこの問題で私を助けてくれるのだろうかと思っていました。ここに私のコードは次のとおりです。

public partial class CustomerResearchForm : MetroFramework.Forms.MetroForm 
{ 
    FactorEntities contex; 
    public CustomerResearchForm() 
    { 
     InitializeComponent(); 
    } 

    private void CustomerResearchForm_Load(object sender, EventArgs e) 
    { 
    } 

    private void CResearchGrid_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     CustomerUpdateAndDelete CustomerUpdateAndDelete = new CustomerUpdateAndDelete(); 
     using ( contex =new FactorEntities()) 
     {  
      var sendergrid=(DataGridView)sender; 
      int customercode = Convert.ToInt32(sendergrid.Rows[e.RowIndex].Cells[1].Value); 
      var customer = from _customer in contex.tblCustomers where 
       _customer.CustomerCode==customercode select _customer; 

      CustomerUpdateAndDelete.tblCustomerBindingSource.DataSource = customer.ToList(); 
      CustomerUpdateAndDelete.Show(); 
      CustomerUpdateAndDelete.tblCustomerBindingNavigatorSaveItem.Click+=tblCustomerBindingNavigatorSaveItem_Click; 
     } 
    } 

    private void tblCustomerBindingNavigatorSaveItem_Click(object sender, EventArgs e) 
    { 
     contex.SaveChanges();  
     throw new NotImplementedException(); 
    } 
} 

例外は、この行で発生します。

contex.SaveChanges(); 

私は、私が何をすべき私のコンテキストにVARを使用することはできませんか?

+1

あなたの文脈は 'using(){}'の中のオブジェクトが自動散布されるのを知っていることを知っています。 – MethodMan

+0

キーワードでC#google検索を実行する – MethodMan

+0

親愛なる@MethodMan私はそれを手に入れました。私は自分のコードから削除し、エラーは消えました。まだ私はcontex情報を編集した後、私のデータベースを更新しません! :( –

答えて

0

あなたusing文が自動的にCResearchGrid_CellMouseDoubleClick()

であなたの閉じ括弧}の終わりにcontexを配置します私はあなたが保存されているかを正確にわからないんだけど、することにより取得するには、あなたがusingステートメントを追加し、あなたを初期化する必要がありますしますcontexオブジェクトです。各メソッドでcontexの初期化のルートを行った場合は、クラスメンバー宣言からそのメソッドを削除する必要があります。実際に何かを保存するには、エンティティを変更するか、contexオブジェクトに新しいエンティティを追加する必要があります。それがなければ、あなたは本当に何も保存していません。

もう一つの方法は、contexをコンストラクタで初期化し、IDisposableを実装することです。その後、Dispose()メソッドでcontex.Dispose()に電話することができます。

+0

@MethodManあなたは括弧を正しく使っています。私はBindingNavigatorSaveItemを呼び出してイベントにコードを書きたいので、(tblCustomerBindingNavigatorSaveItem_Click)のような別のメソッドが必要です。私のループで私のコンテキストを使用する方法について考えるべきです。 –

関連する問題