سلام
من داخل برنامه هر کوئری ای که میخوام به بانک بزنم با اکسپشن زیر مواجه میشم :
The operation cannot be completed because the DbContext has been disposed.'
هیچ تغییراتی نمیتونم داخل بانک بزنم!
این کدی هستش که به بانک دسترسی میده :
public class UnitOfWork:IDisposable { Accounting_DBEntities db = new Accounting_DBEntities(); private ICustomerRepository _customerRepository; public ICustomerRepository customerRepository { get { if(_customerRepository==null) { _customerRepository = new CustomerRepository(db); } return _customerRepository; } } public void Save() { db.SaveChanges(); } public void Dispose() { db.Dispose(); } } }
شما یه امتحان کن با حذف این IDisposable
public
void
Dispose()
{
db.Dispose();
}
اینم کامنت کن علل حساب
شما احتمال زیاد بعد هر تغییر save رو فراخوانی نمیکنی
بعد از اینکه تغییر رو دادی save رو هم بزنم
نمیشه چون interface هست حتما باید ایمپلیمنتش کنم
کل interface رو هم که برداشتم جا های دیگه برنامه ارور داد
برای قسمت دوم هم اینکه تو هر تغییر save رو فراخوانی میکنم
آره درسته
چون وقتی از خود sql تغییرات میدم توی برنامه هم اعمال میشه
بهتره برگردی از اون جایی که تغییراتی اعمال کردی و این خطا اومده
از اونجا شروع کنی چک کردن بهت پیشنهاد میکنم از breakpoint استفاده کنی برای خطا یابی
بهتون پیشنهاد میکنم این تایپیک رو بخونید
https://stackoverflow.com/a/13617759
من احتمال میدم شما یک کد از دستورات فراخواندی دیتابیس شما خارج از بخش Using تعریف شده باشه
ترجمه این ارور که این رو میگه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)