示例#1
0
        private void InitializeContainer()
        {
            // Add application services. For instance:
            //   _container.Register<ICommandBus, CommandBus>(Lifestyle.Singleton);
            FrameworkConfigurator.WireUp(_container, false, typeof(VehicleAppService).Assembly, typeof(GetVehicleCurrentPositionQuery).Assembly);
            AppServiceConfigurator.WireUp(_container);
            _container.Register <ICurrentUserService, CurrentUserService>();
            _container.Register <IHttpContextAccessor, HttpContextAccessor>();
            _container.Register <IDataSeeder, DataSeeder>();


            //options.UseSqlServer(
            //       configuration.GetConnectionString("FRIQuery"),
            //       b => b.MigrationsAssembly(typeof(VehicleDbContext).Assembly.FullName)));

            //var reg = Lifestyle.Scoped.CreateRegistration(() =>
            //{
            //    return new VehicleDbContext(new DbContextOptionsBuilder<VehicleDbContext>().UseSqlServer(_configuration.GetConnectionString("FRIQuery")).Options);
            //}, _container);

            var reg = Lifestyle.Scoped.CreateRegistration(() =>
            {
                return(new VehicleDbContext(new DbContextOptionsBuilder <VehicleDbContext>().UseSqlServer(_appSettings.ConnectionStrings.ConnectionString, x => x.UseNetTopologySuite()).Options));
            }, _container);

            _container.AddRegistration <IDbContext>(reg);
            //_container.Register<IDbContext>(() =>
            //{
            //    return new VehicleDbContext(new DbContextOptionsBuilder<VehicleDbContext>().UseSqlServer(_configuration.GetConnectionString("FRIQuery")).Options);
            //});
        }
示例#2
0
        public static FrameworkConfigurator UseServiceCollection(
            this FrameworkConfigurator configurator,
            IServiceCollection services)
        {
            var wrapper = new ServiceCollectionWrapper(services);

            return(configurator.SetDependencyFramework(wrapper));
        }
示例#3
0
        public static FrameworkConfigurator UseJsonSerializers(this FrameworkConfigurator configurator)
        {
            configurator.RegisterSingelton <ICommandSerializer, JsonCommandSerializer>();
            configurator.RegisterSingelton <IEventSerializer, JsonEventSerializer>();
            configurator.RegisterSingelton <ISnapshotSerializer, JsonSnapshotSerializer>();

            return(configurator);
        }
示例#4
0
        private static FrameworkConfigurator RegisterMigrationAction(this FrameworkConfigurator configurator)
        {
            return(configurator.RegisterInitializationAction(async resolver =>
            {
                var factory = resolver.Resolve <IFrameworkContextFactory>();

                using (var context = await factory.CreateContext())
                {
                    context.Migrate();
                }
            }));
        }
示例#5
0
        public static FrameworkConfigurator UseDefaultStores(this FrameworkConfigurator configurator)
        {
            configurator.RegisterTransientType <IEventStore, EventStore>();
            configurator.RegisterTransientType <ISessionStore, SessionStore>();
            configurator.RegisterTransientType <ISnapshotStore, SnapshotStore>(); // Todo: Select flavor
            configurator.RegisterTransientType <IEventHandlerStateStore, EventHandlerStateStore>();

            configurator.RegisterSingelton <IDataStoreConnectionFactory, DataStoreConnectionFactory>();
            configurator.RegisterSingelton <IFrameworkContextFactory, DataStoreConnectionFactory>();
            // Todo: EventHandler state store

            return(configurator);
        }
示例#6
0
        public static FrameworkConfigurator UseScopedContext <TContextInterface>(
            this FrameworkConfigurator configurator,
            Func <DbContextOptions, TContextInterface> factoryMethod)
            where TContextInterface : IScopedContex
        {
            configurator.RegisterSingelton <
                ISessionScopedContextFactory <TContextInterface>,
                SessionScopedContextFactory <TContextInterface> >();

            configurator.RegisterInitializationAction(async resolver =>
            {
                var factory = resolver.Resolve <ISessionScopedContextFactory <TContextInterface> >();
                factory.Initialize(factoryMethod);
            });

            return(configurator);
        }
        static void Main(string[] args)
        {
            string conStr = ConfigurationManager.ConnectionStrings["FRI"].ToString();

            container = new Container();

            container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
            FrameworkConfigurator.WireUp(container, false, typeof(LoanAppService).Assembly, typeof(CreateLoanCommand).Assembly);
            AppServiceConfigurator.WireUp(container);
            //var mydb = new FRIDbContext(conStr);
            //mydb.Database.Migrate();


            var host = new WebHostBuilder()
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseKestrel()
                       .UseStartup <Startup>()
                       .UseUrls("http://localhost:5005/")
                       .Build();


            host.Run();
        }
        private void InitializeContainer()
        {
            // Add application services. For instance:
            //   _container.Register<ICommandBus, CommandBus>(Lifestyle.Singleton);
            FrameworkConfigurator.WireUp(_container, false, typeof(LoanAppService).Assembly, typeof(CreateLoanCommand).Assembly);
            AppServiceConfigurator.WireUp(_container);


            // options.UseSqlServer(
            ////        configuration.GetConnectionString("FRIQuery"),
            ////        b => b.MigrationsAssembly(typeof(FRIDbContext).Assembly.FullName)));

            var reg = Lifestyle.Scoped.CreateRegistration(() =>
            {
                return(new FRIDbContext(new DbContextOptionsBuilder <FRIDbContext>().UseSqlServer(_configuration.GetConnectionString("FRIQuery")).Options));
            }, _container);

            _container.AddRegistration <IDbContext>(reg);
            //_container.Register<IDbContext>(() =>
            //{
            //    return new FRIDbContext(new DbContextOptionsBuilder<FRIDbContext>().UseSqlServer(_configuration.GetConnectionString("FRIQuery")).Options);
            //});
        }
示例#9
0
 // Snapshot strategy
 public static FrameworkConfigurator UseSnapshotNoneStrategy(this FrameworkConfigurator configurator)
 {
     configurator.RegisterSingelton <ISnapshotStrategy, SnapshotNoneStrategy>();
     return(configurator);
 }
示例#10
0
 // Locking
 public static FrameworkConfigurator SetLockingStrategy(this FrameworkConfigurator configurator, LockingStrategy lockingStrategy)
 {
     throw new NotSupportedException("Not yet supported.");
     return(configurator);
 }
示例#11
0
 public static FrameworkConfigurator UseSnapshotOnEventCountStrategy(this FrameworkConfigurator configurator, int eventCount = 50)
 {
     configurator.AddConfigurationValue(SnapshotOnEventCountStrategy.ConfigurationKey, eventCount);
     configurator.RegisterSingelton <ISnapshotStrategy, SnapshotOnEventCountStrategy>();
     return(configurator);
 }
示例#12
0
 private static FrameworkConfigurator UseProvider(this FrameworkConfigurator configurator, string connectionString, ProviderType providerType)
 {
     configurator.AddConfigurationValue(DataStoreConnectionFactory.EFCoreConnectionStringKey, connectionString);
     configurator.AddConfigurationValue(DataStoreConnectionFactory.ProviderTypeKey, providerType);
     return(RegisterMigrationAction(configurator));
 }
示例#13
0
 public static FrameworkConfigurator UseMySql(this FrameworkConfigurator configurator,
                                              string connectionString)
 {
     return(UseProvider(configurator, connectionString, ProviderType.MySql));
 }