DbContext disposed - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Пишу сайт codefirst+unitofwork. Запускаю на дебаг, из базы вытаскивается все, что нужно, загружается страница, радость, счастье. Обновляю страницу - выкидывает ошибку The operation cannot be completed because the DbContext has been disposed.
using (var uow = _unitOfWorkFactory.CreateUnitOfWork())
            {
                var rep = uow.GetRepository<IProductRepository>();
                var currentProduct = rep.Get(1);
            }public class UnitOfWorkFactory : IUnitOfWorkFactory
    {
        public UnitOfWorkFactory(IUnityContainer container)
        {
            _container = container;
        }
 
        public IUnitOfWork CreateUnitOfWork()
        {
            return _container.Resolve<IUnitOfWork>();
        }
 
        private readonly IUnityContainer _container;
    } public UnitOfWork(IUnityContainer container)
        {
            _container = container;
            Context = _container.Resolve<DataContext>();
        }
 
        public TRepository GetRepository<TRepository>() where TRepository : class
        {
            return _container.Resolve<TRepository>();
        }
 
        public void Commit()
        {
            Context.SaveChanges();
        }
 
        public void Dispose()
        {
            if (!_disposed)
            {
                _disposed = true;
                Context.Dispose();
            }
        }

        internal DataContext Context { get; set; }
        private Boolean _disposed;
        private readonly IUnityContainer _container;public ProductRepository(UnitOfWork unitOfWork)
            :base(unitOfWork)
        {
        }
        
        public Product Add(Product entity)
        {
            return DataBase.Add(entity);
        }
 
        public Product Remove(Product entity)
        {
            return DataBase.Remove(entity);
        }
 
        public Product Get(Int32 entityId)
        {
            return DataBase.FirstOrDefault(x => x.Id == entityId);
        }internal BaseRepository(UnitOfWork unitOfWork)
        {
            UnitOfWork = unitOfWork;
        }
     
        internal virtual IDbSet<TEntity> DataBase
        {
            get
            {
                return UnitOfWork.Context.Set<TEntity>();
            }
        }
 
        internal UnitOfWork UnitOfWork { get; private set; }
Добавил код, ибо как я понимаю, телепатически помочь не получается

Решение задачи: «DbContext disposed»

textual
Листинг программы
public static class NinjectWebCommon
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();
 
    /// <summary>
    /// Starts the application
    /// </summary>
    public static void Start() 
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
        DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
        bootstrapper.Initialize(CreateKernel);
    }
    
    /// <summary>
    /// Stops the application.
    /// </summary>
    public static void Stop()
    {           
        bootstrapper.ShutDown();
    }
        
    /// <summary>
    /// Creates the kernel that will manage your application.
    /// </summary>
    /// <returns>The created kernel.</returns>
    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        RegisterServices(kernel);
        return kernel;
    }
 
    /// <summary>
    /// Load your modules or register your services here!
    /// </summary>
    /// <param name="kernel">The kernel.</param>
    private static void RegisterServices(IKernel kernel)
    {
        // my binds 
        kernal.Bind<DbContext>.To<EFDbContext>().InRequestScope();
        kernal.Bind<IUnitOfWork>.To<UnitOfWork>();
        kernal.Bind<IUnitOfWorkFactory>.To<UnitOfWorkFactory>();
        kernal.Bind<IRepository<Catagory>>.To<EFRepository<Catagory>>();
    }       
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5