public static Action <IContainer, MigrationCustomizer> InitializeAndGetMigrator(
            IContainerSetup s,
            Func <ISqlConnectionStringProvider> connectionStringProviderFactory,
            params Assembly[] entitiesOrigin)
        {
            s.For <ISqlConnectionStringProvider>().Import.FromFactory(locator => connectionStringProviderFactory());

            s.For <IDataModelHelper>().Use <CachedDataModelHelper>();
            s.For <ITransactionManager <SqlConnection> >().Use <ConnectionCreator>();
            s.For <IDatabase>().Use <Database>();
            s.For <ISchemaMigrator>().Use <SchemaMigrator>();
            s.For <IEntityNamingConvention>().Use <DefaultEntityNamingConvention>();

            foreach (var assembly in entitiesOrigin)
            {
                s.ScanAssembly(assembly);
            }

            Action <IContainer, MigrationCustomizer> migratorFunc = (container, customizer) =>
            {
                var sqlScriptGenerator = new SqlMigrationScriptBuilder();
                var hashBuilder        = new MigrationHashBuilder();
                var proxy = new ScriptBuilderProxy(hashBuilder, sqlScriptGenerator);

                if (customizer != null)
                {
                    proxy.AddCustomScript(customizer.BeforeMigrationScript, customizer.AfterMigrationScript);
                }

                using (var locator = container.GetLocator())
                {
                    var migrator = locator.Get <ISchemaMigrator>();
                    migrator.MigrateStructure(locator, proxy);

                    var hash   = hashBuilder.GetHash();
                    var script = sqlScriptGenerator.ToString(hash);

                    var connectionBuilder = locator.Get <ITransactionManager <SqlConnection> >();

                    using (var connection = connectionBuilder.Open(false))
                    {
                        using (var command = new SqlCommand(script, connection.GetConnection()))
                        {
                            command.CommandTimeout = 1000000;
                            command.ExecuteNonQuery();
                        }

                        connection.Commit();
                    }

                    if (!string.IsNullOrWhiteSpace(customizer.ScriptsRoot))
                    {
                        ScriptsMigrator.RunScripts(connectionBuilder, customizer.ScriptsRoot);
                    }
                }
            };

            return(migratorFunc);
        }
Beispiel #2
0
 private static void LoadContainer()
 {
     lock (Triowing)
     {
         if(IocFactory!=null) return;
         IocFactory = new StardustIocFactory();
     }
 }
Beispiel #3
0
 internal static void LoadContainer(IContainerSetup containerSetup)
 {
     lock (Triowing)
     {
         if(IocFactory!=null) throw new InvalidOperationException("Container factory already created");
         IocFactory = containerSetup;
     }
 }
Beispiel #4
0
 internal static void LoadContainer(IBlueprint config)
 {
     // ReSharper disable once SuspiciousTypeConversion.Global 
     lock (Triowing)
     {
         if (IocFactory != null) return;
         IocFactory = config as IContainerSetup ?? new StardustIocFactory(); 
     }
 }
Beispiel #5
0
        public void Setup(IContainerSetup setup)
        {
            //AsyncLogger.Initialize(new ConnectionStringProvider());

            setup.For <IConfigurationRepository>().Use <ConfigurationRepository>();
            setup.For <ILog>().Use <Logger>();
            setup.For <ICache>().Use <Cache>();
            setup.For <IPerProjectDbCache>().Use <PerProjectDbCache>();
            setup.For <ISysCountersManager>().Use <SysCounterManager>();
        }
Beispiel #6
0
 private static void LoadContainer()
 {
     lock (Triowing)
     {
         if (IocFactory != null)
         {
             return;
         }
         IocFactory = new StardustIocFactory();
     }
 }
Beispiel #7
0
 internal static void LoadContainer(IContainerSetup containerSetup)
 {
     lock (Triowing)
     {
         if (IocFactory != null)
         {
             throw new InvalidOperationException("Container factory already created");
         }
         IocFactory = containerSetup;
     }
 }
        public void Setup(Type markedType, IContainerSetup setup)
        {
            if (!setup.GetRegisteredPlugins <ControllerCollectorPlugin>().Any())
            {
                setup.RegisterPlugin(s => s.CustomInstanceCreators.Add(new ControllerCollectorPlugin()));
            }

            setup.For(markedType)
            .Use(markedType)
            .WithBehavior <ControllerBehavior>(SetupBehavior);
        }
Beispiel #9
0
 internal static void LoadContainer(IBlueprint config)
 {
     // ReSharper disable once SuspiciousTypeConversion.Global
     lock (Triowing)
     {
         if (IocFactory != null)
         {
             return;
         }
         IocFactory = config as IContainerSetup ?? new StardustIocFactory();
     }
 }
Beispiel #10
0
        public void Setup(Type markedType, IContainerSetup setup)
        {
            if (!setup.GetRegisteredPlugins <EntityPlugin>().Any())
            {
                setup.RegisterPlugin(p => p.CustomInstanceCreators.Add(new EntityPlugin(new DefaultRobOrmSetup())));
            }

            if (!setup.GetRegisteredPlugins <EntityCollectorPlugin>().Any())
            {
                setup.RegisterPlugin(p => p.CustomInstanceCreators.Add(new EntityCollectorPlugin()));
                setup.For <IEntityCollector>();
            }

            var entityName = EntityName;

            if (string.IsNullOrWhiteSpace(entityName))
            {
                entityName = NamingHelper.GetDefaultEntityName(markedType);
            }

            var pkProperty = PrimaryKeyProperty;

            if (string.IsNullOrWhiteSpace(pkProperty))
            {
                pkProperty = "Id";
            }

            if (ReflectionUtil.GetProperty(markedType, pkProperty) == null)
            {
                throw new InvalidOperationException($"{markedType.Name} - Primary Key property \"{pkProperty}\" not found");
            }

            setup.For(markedType)
            .WithBehavior <EntityBehavior>(db =>
            {
                db.EntityName         = entityName;
                db.PrimaryKeyProperty = pkProperty;
            })
            .WithBehavior <LifecycleBehavior>(lb => lb.AlwaysNewInstance = true)
            .WithBehavior <DisposeBehavior>(db => db.Dispose             = false);
        }
Beispiel #11
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IErpClientFactory>().Use <ErpClientFactory>();
     setup.For <IPurchaseOrderRepository>().Use <PurchaseOrderRepository>();
     setup.For <ICurrencyRepository>().Use <CurrencyRepository>();
     setup.For <IProductRepository>().Use <ProductRepository>();
     setup.For <IOrderStatusMappingRepository>().Use <OrderStatusMappingRepository>();
     setup.For <IOrderStatusTranslator>().Use <OrderStatusTranslator>();
     setup.For <IOrderStatusRepository>().Use <OrderStatusRepository>();
     setup.For <IPaymentRepository>().Use <PaymentRepository>();
     setup.For <IOrdersFacade>().Use <OrdersFacade>();
     setup.For <IVirtualProductRepository>().Use <VirtualProductRepository>();
     setup.For <IErpRepository>().Use <ErpRepository>();
     setup.For <IUnitRepository>().Use <UnitRepository>();
     setup.For <IUnitConversionHelper>().Use <UnitConversionHelper>();
     setup.For <IMaterialRepository>().Use <MaterialRepository>();
     setup.For <IVirtualProductFacade>().Use <VirtualProductFacade>();
     setup.For <IMaterialFacade>().Use <MaterialFacade>();
     setup.For <IKitProductRepository>().Use <KitProductRepository>();
     setup.For <ICustomerRepository>().Use <CustomerRepository>();
     setup.For <IUserRepository>().Use <UserRepository>();
     setup.For <IMaterialBatchRepository>().Use <MaterialBatchRepository>();
     setup.For <IMaterialBatchFacade>().Use <MaterialBatchFacade>();
     setup.For <AmountProcessor>().Use <AmountProcessor>();
     setup.For <IPackingPreferredBatchRepository>().Use <PreferredBatchRepository>();
     setup.For <IProductionFacade>().Use <ProductionFacade>();
     setup.For <IBatchReportingFacade>().Use <BatchReportingFacade>();
     setup.For <IMaterialThresholdRepository>().Use <MaterialThresholdRepository>();
     setup.For <IStockEventRepository>().Use <StockEventRepository>();
     setup.For <ISupplierRepository>().Use <SupplierRepository>();
     setup.For <ICurrencyConversionHelper>().Use <CurrencyConversionHelper>();
     setup.For <IRepositoryFactory>().Use <RepositoryFactory>();
     setup.For <IFixedCostRepository>().Use <FixedCostRepository>();
     setup.For <ISaleEventRepository>().Use <SaleEventRepository>();
     setup.For <IRecipeRepository>().Use <RecipeRepository>();
     setup.For <IOrderWeightCalculator>().Use <OrderWeightCalculator>();
 }
Beispiel #12
0
 public static void LoadIocContainer(IContainerSetup containerSetup)
 {
     HasExternalIoc = true;
     KernelFactory.LoadContainer(containerSetup);
 }
 public void Setup(IContainerSetup setup)
 {
 }
Beispiel #14
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IShipmentProvider>().Use <ZasilkovnaClient>();
 }
Beispiel #15
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IParametersResolver>().Use <ParametersResolver>();
     setup.For <AutoProceduresJob>().Use <AutoProceduresJob>();
 }
Beispiel #16
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <EventModelProcessor>().Use <EventModelProcessor>();
 }
Beispiel #17
0
 public void Setup(Type markedType, IContainerSetup setup)
 {
     setup.For(markedType).ImportObject.FromFactory(locator => ConfigFactory(locator, markedType));
 }
Beispiel #18
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <ElsaExcelModelFactory>().Use <ElsaExcelModelFactory>();
 }
Beispiel #19
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IInvoiceFormGeneratorFactory>().Use <InvoiceFormGeneratorFactory>();
     setup.For <IInvoiceFormsGenerationRunner>().Use <InvoiceFormsGenerationRunner>();
 }
Beispiel #20
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <FloxDataMapper>().Use <FloxDataMapper>();
 }
Beispiel #21
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IInvoiceFormsRepository>().Use <InvoiceFormRepository>();
 }
Beispiel #22
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IUserRepository>().Use <UserRepository>();
     setup.For <IUserRoleRepository>().Use <UserRepository>();
     setup.For <IUserManagementFacade>().Use <UserManagementFacade>();
 }
Beispiel #23
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IProductionService>().Use <Service.ProductionService>();
     setup.For <IRecipeService>().Use <RecipeService>();
 }
Beispiel #24
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <InvoiceFormsQueryingFacade>().Use <InvoiceFormsQueryingFacade>();
     setup.For <IInvoiceFormRendererFactory>().Use <InvoiceFormRendererFactory>();
 }
Beispiel #25
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IPaymentSystemClientFactory>().Use <PaymentSystemClientFactory>();
 }
Beispiel #26
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IStockReportLoader>().Use <StockReportLoader>();
 }
Beispiel #27
0
 public void Setup(Type markedType, IContainerSetup setup)
 {
     UserRights.RegisterType(markedType);
 }
Beispiel #28
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IMailSender>().Use <SmtpMailSender>();
     setup.For <IRecipientListsRepository>().Use <RecipientListsRepository>();
 }
Beispiel #29
0
 public void Setup(IContainerSetup setup)
 {
     //setup.ScanAssembly(typeof(ProfileController).Assembly);
 }
Beispiel #30
0
 protected virtual void RegisterControllerNameExtractor(IContainerSetup setup)
 {
     setup.For <IControllerNameExtractor>().Use <DefaultControllerNameExtractor>();
 }
Beispiel #31
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <ElerpClient>().Use <ElerpClient>();
 }
Beispiel #32
0
 public void Setup(IContainerSetup setup)
 {
     setup.For <IInspectionsRepository>().Use <InspectionsRepository>();
 }
Beispiel #33
0
 public void Setup(Type markedType, IContainerSetup setup)
 {
     setup.For(markedType).Use(m_implementingType);
 }