Операция не может быть завершена, так как 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()
метод.