Операция не может быть завершена, так как 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 заявление будет автоматически распоряжаться contex в конце вашей закрывающей скобки } в CResearchGrid_CellMouseDoubleClick()

Я не совсем уверен, что вы экономите, но чтобы получить, вы должны добавить using заявление и инициализировать ваш contex объект. Если вы идете по пути инициализации вашего contex в каждом методе вы должны удалить его из объявлений вашего класса. Обратите внимание, что вам нужно будет изменить ваши объекты или добавить новые объекты в ваш contex объект для вас на самом деле сохранить что-нибудь. Без этого вы ничего не спасете.

Еще один способ начать это вы бы инициализировать contex в вашем конструкторе и реализовать IDisposable, Тогда вы можете позвонить contex.Dispose() в Dispose() метод.

Другие вопросы по тегам