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

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

کاربر سایت

arshia.dou

عضویت از 1399/02/07

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.'

هیچ تغییراتی نمیتونم داخل بانک بزنم!

این کدی هستش که به بانک دسترسی میده :

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

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

mohammadd

عضویت از 1395/12/08

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

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

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

کاربر سایت

arshia.dou

عضویت از 1399/02/07

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

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

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

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

کاربر سایت

منال مجموعه

عضویت از 1393/10/21

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

arshia.dou

عضویت از 1399/02/07

  • یکشنبه 21 اردیبهشت 1399
  • 20:10

آره درسته 

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

کاربر سایت

ahmadreza99

عضویت از 1398/06/01

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

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

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

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

https://stackoverflow.com/a/13617759

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

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)