protected override void Load(ContainerBuilder builder) { builder.RegisterAssemblyTypes(typeof(EstateRepository).Assembly) .Where(a => typeof(IRepository).IsAssignableFrom(a)) .AsImplementedInterfaces() .InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(typeof(EstateFacadeService).Assembly) .Where(a => typeof(IFacadeService).IsAssignableFrom(a)) .AsImplementedInterfaces() .InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(typeof(EstateFacadeQuery).Assembly) .Where(a => typeof(IFacadeService).IsAssignableFrom(a)) .AsImplementedInterfaces() .InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(typeof(EstateCommandHandler).Assembly) .AsClosedTypesOf(typeof(ICommandHandler <>)).InstancePerLifetimeScope(); var sessionFactory = SessionFactoryBuilder.Create(typeof(EstateMapping).Assembly, _connectionString, "Asani"); builder.Register <ISession>(a => { var session = sessionFactory.OpenSession(); return(session); }).InstancePerLifetimeScope().OnRelease(a => a.Close()); builder.Register <DbConnection>(z => { var connection = new SqlConnection(_connectionString); connection.Open(); return(connection); }).InstancePerLifetimeScope().As <IDbConnection>().OnRelease(a => a.Close()); builder.Register <AsaniContext>(s => { var options = new DbContextOptionsBuilder <AsaniContext>() .UseSqlServer(_connectionString) .Options; var context = new AsaniContext(options); return(context); }).InstancePerLifetimeScope().OnRelease(a => a.Dispose()); builder.RegisterGenericDecorator(typeof(TransactionalCommandHandlerDecorator <>), typeof(ICommandHandler <>)); builder.RegisterType <CommandBus>().As <ICommandBus>() .SingleInstance(); builder.RegisterType <NhUnitOfWork>().As <IUnitOfWork>() .InstancePerLifetimeScope(); builder.RegisterType <AutofacServiceLocator>().As <IServiceLocator>() .SingleInstance(); }
public EstateFacadeQuery(AsaniContext context) { _context = context; }