Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 public EstateFacadeQuery(AsaniContext context)
 {
     _context = context;
 }