Простой инжектор - несоответствие образа жизни - PullRequest
0 голосов
/ 02 января 2019

Я использую единицу работы для своих переходов.Я создал DbContext, который обрабатывает соединения, фиксацию, откат.

В классах доступа к данным и бизнес-уровня я внедряю IDbContext с помощью конструкторов.

public TestDAL(IDbContext dbContext) : base(dbContext) {}

public TestService(IDbContext dbContext, ITestDAL testDAL) {}

Я переместил простой инжектор из autofac,Я получаю исключение в отношении несоответствия образа жизни.

- [Несоответствие образа жизни] TestService (Async Scoped) зависит от IDbContext, реализованного DbContext (Transient).

- [Несоответствие образа жизни]TestDAL (Async Scoped) зависит от IDbContext, реализованного с помощью DbContext (Transient).

Я регистрирую свои DAL и классы Service как область действия, а DbContext как переходную.

var ServiceRegistrations =
                from type in Assembly.GetExecutingAssembly().GetTypes()
                where type.Name.EndsWith("Service") && type.IsClass
                from service in type.GetInterfaces()
                select new { service, type };

foreach (var reg in ServiceRegistrations)
{
    container.Register(reg.service, reg.type, Lifestyle.Scoped);
}

container.Register<IDbContext, DbContext>(Lifestyle.Transient);

Я читаю некоторыео DbContext должен быть временным, он не является потокобезопасным.Также я считаю, что классы DAL и Service не нужны для создания переходных процессов.Как я могу исправить эту ситуацию?Между прочим, это не было проблемой при автофаке.

...