مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

The operation cannot be completed because the DbContext has been disposed-مشکل در بانک اطلاعاتی

یکشنبه, 21 اردیبهشت 1399 00:29

The operation cannot be completed because the DbContext has been disposed-مشکل در بانک اطلاعاتی

سلام 

من داخل برنامه هر کوئری ای که میخوام به بانک بزنم با اکسپشن زیر مواجه میشم :

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();
        }
    }
}

یکشنبه, 21 اردیبهشت 1399 08:16

شما یه امتحان کن با حذف این IDisposable

 public void Dispose()
        {
            db.Dispose();
        }
اینم کامنت کن علل حساب
شما احتمال زیاد بعد هر تغییر save رو فراخوانی نمیکنی
بعد از اینکه تغییر رو دادی save رو هم بزنم

یکشنبه, 21 اردیبهشت 1399 18:30

نمیشه چون interface هست حتما باید ایمپلیمنتش کنم 

کل interface رو هم که برداشتم جا های دیگه برنامه ارور داد 

برای قسمت دوم هم اینکه تو هر تغییر save   رو فراخوانی میکنم

یکشنبه, 21 اردیبهشت 1399 19:16
مطمنی کانکشن ات درسته و برقرار؟
یکشنبه, 21 اردیبهشت 1399 20:10

آره درسته 

چون وقتی از خود sql تغییرات میدم توی برنامه هم اعمال میشه

چهارشنبه, 24 اردیبهشت 1399 00:55

بهتره برگردی از اون جایی که تغییراتی اعمال کردی و این خطا اومده

از اونجا شروع کنی چک کردن بهت پیشنهاد میکنم از breakpoint استفاده کنی برای خطا یابی

بهتون پیشنهاد میکنم این تایپیک رو بخونید

https://stackoverflow.com/a/13617759

من احتمال میدم شما یک کد از دستورات فراخواندی دیتابیس شما خارج از بخش Using تعریف شده باشه

ترجمه این ارور که این رو میگه

ارسال پاسخ برای این تاپیک