Невозможно получить доступ к удаленному объекту Ошибка при вызове компонента два раза подряд - PullRequest
0 голосов
/ 13 марта 2020

В моем проекте есть компонент, который отображает список продуктов в определенной группе c.

public class ProductListIncategoryViewComponent : ViewComponent
    {
        private IProductRepository productRepository;

        public ProductListIncategoryViewComponent(IProductRepository repoprod)
        {
            productRepository = repoprod;

        }
        public IViewComponentResult Invoke(int priorityid)
        {

            MixProductView result = productRepository.SelectByCategory(priorityid);
            return View(result);

        }
    }

Вводом компонента является groupID.

Поэтому я вызываю компонент дважды показать продукты двух групп. например:

@await Component.InvokeAsync("ProductListIncategory", new { priorityid = 3 })
@await Component.InvokeAsync("ProductListIncategory", new { priorityid = 4 }) //Error 

У меня ошибка при выполнении этого два раза подряд.

Невозможно получить доступ к удаленному объекту. Распространенной причиной этой ошибки является удаление контекста, который был разрешен путем внедрения зависимостей, а затем попытка использовать тот же экземпляр контекста в другом месте вашего приложения. Это может произойти, если вы вызываете Dispose () для контекста или заключаете контекст в оператор using. Если вы используете внедрение зависимости, вы должны позволить контейнеру введения зависимости позаботиться об удалении экземпляров контекста. Имя объекта: 'KuteCoredbContext

, но нет ошибки при вызове компонента один раз

@await Component.InvokeAsync("ProductListIncategory", new { priorityid = 3 })

или при вызове компонента другим groupid

@await Component.InvokeAsync("ProductListIncategory", new { priorityid = 4 })

1 Ответ

0 голосов
/ 14 марта 2020

Я нашел решение.

Мне нужно было добавить эту команду в startup.cs после services.AddDbContext

services.AddDbContext<KuteCoredbContext>(option => option.UseSqlServer(Configuration["Data:KuteCore:ConnectionString"]));
services.AddTransient<KuteCoredbContext>();// <----add thos command
...