Autofa c DbContext - PullRequest
       46

Autofa c DbContext

0 голосов
/ 21 февраля 2020

Я использую Autofac для введения зависимостей в. Net Core 3. Потому что я хочу использовать AOP с Autofa c. В моем проекте есть класс Context как DbContext. Я зарегистрировал класс Context с опциями Autofa c Container. Вот как это выглядит ниже:

var dbContextOptions = new DbContextOptionsBuilder<Context>().UseMySql(str, x => x.MigrationsAssembly("Data"));
builder.RegisterType<Context>().WithParameter("options", dbContextOptions.Options).InstancePerLifeTimeScope();

После того, как я написал этот код, я запустил проект. Я проверил уникальную базу данных индекса с почтальоном. Мой сценарий тестирования выглядит следующим образом:

  1. Я заполнил поля.
  2. Я отправил его.
  3. Успешно записан.
  4. Я повторно опубликовал it.
  5. Я получил исключение повторяющихся записей для уникальных индексов.
  6. Я отредактировал уникальные поля.
  7. Я опубликовал его заново.
  8. Я получил исключение для повторяющихся записей для уникальных индексов. Когда я посмотрел детали исключения, я увидел предыдущие заполненные поля.

При отладке проекта я увидел, что single dbcontext был создан для каждого запроса. Я думал, что проблема была вызвана этим. И я изменил код регистра, выглядит, как показано ниже,

builder.RegisterType<Context>().WithParameter("options", dbContextOptions.Options).InstancePerRequest();

Я получил исключение, выглядит так, как показано ниже,

Autofa c .Core.DependencyResolutionException: исключение было выдается при активации Logi c .Concrete.BusinessManager -> Data.EntityFramework.UnitOfWork. ---> Autofa c .Core.DependencyResolutionException: Невозможно разрешить тип 'Data.EntityFramework.Context', поскольку невозможно определить область действия, к которой он принадлежит. Следующие службы предоставляются этой регистрацией: - Data.EntityFramework.Context

Подробности ---> Autofa c .Core.DependencyResolutionException: Нет области с тегом, совпадающим с 'AutofacWebRequest' из области видимости для которого был запрошен экземпляр.

Когда я использую встроенное внедрение зависимостей Microsoft, проблем нет, и он генерирует новый dbcontext для запроса.

Как я могу зарегистрировать для запроса dbcontext с помощью autofa c?

...