Ejemplo n.º 1
0
        private void BuildServices()
        {
            var services      = context.Services;
            var configuration = context.Configuration;

            services.Configuration       = configuration;
            services.IndexFilterCompiler = new PartialIndexFilterCompiler();

            if (context.ParentDomain == null)
            {
                var descriptor     = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
                var driverFactory  = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
                var handlerFactory = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);
                var driver         = StorageDriver.Create(driverFactory, configuration);
                services.HandlerFactory = handlerFactory;
                services.StorageDriver  = driver;
                services.NameBuilder    = new NameBuilder(configuration, driver.ProviderInfo);
            }
            else
            {
                var handlers = context.ParentDomain.Handlers;
                services.HandlerFactory = handlers.Factory;
                services.StorageDriver  = handlers.StorageDriver;
                services.NameBuilder    = handlers.NameBuilder;
            }

            CreateConnection(services);
            context.DefaultSchemaInfo = defaultSchemaInfo = services.StorageDriver.GetDefaultSchema(services.Connection);
            services.MappingResolver  = MappingResolver.Create(configuration, context.NodeConfiguration, defaultSchemaInfo);
            BuildExternalServices(services, configuration);
            services.Lock();

            context.TypeIdProvider = new TypeIdProvider(context);
        }
Ejemplo n.º 2
0
        private void CreateAccessor()
        {
            var nodeConfiguration = new NodeConfiguration();
            var configuration     = DomainConfigurationFactory.Create();
            var descriptor        = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
            var driverFactory     = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
            var storageDriver     = StorageDriver.Create(driverFactory, configuration);
            var nameBuilder       = new NameBuilder(configuration, storageDriver.ProviderInfo);
            var handlerFactory    = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);

            var accessor = new UpgradeServiceAccessor {
                Configuration  = configuration,
                StorageDriver  = storageDriver,
                NameBuilder    = nameBuilder,
                HandlerFactory = handlerFactory
            };

            configuration.Lock();
            var connection = storageDriver.CreateConnection(null);

            connection.Open();
            accessor.MappingResolver = MappingResolver.Create(configuration, nodeConfiguration, storageDriver.GetDefaultSchema(connection));
            if (storageDriver.ProviderInfo.Supports(ProviderFeatures.SingleConnection))
            {
                accessor.RegisterTemporaryResource(connection);
            }
            else
            {
                accessor.RegisterResource(connection);
            }
            accessor.Connection = connection;
            accessor.Connection.Extensions.AddOne(new TypeDelegator(typeof(IProviderExecutor)));

            this.accessor = accessor;
        }
Ejemplo n.º 3
0
        private async ValueTask BuildServices(bool isAsync, CancellationToken token = default)
        {
            var services      = context.Services;
            var configuration = context.Configuration;

            services.Configuration       = configuration;
            services.IndexFilterCompiler = new PartialIndexFilterCompiler();

            if (context.ParentDomain == null)
            {
                var descriptor     = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
                var driverFactory  = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
                var handlerFactory = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);
                var driver         = isAsync
          ? await StorageDriver.CreateAsync(driverFactory, configuration, token).ConfigureAwait(false)
          : StorageDriver.Create(driverFactory, configuration);

                services.HandlerFactory = handlerFactory;
                services.StorageDriver  = driver;
                services.NameBuilder    = new NameBuilder(configuration, driver.ProviderInfo);
            }
            else
            {
                var handlers = context.ParentDomain.Handlers;
                services.HandlerFactory = handlers.Factory;
                services.StorageDriver  = handlers.StorageDriver;
                services.NameBuilder    = handlers.NameBuilder;
            }

            await CreateConnection(services, isAsync, token).ConfigureAwait(false);

            context.DefaultSchemaInfo = defaultSchemaInfo = isAsync
        ? await services.StorageDriver.GetDefaultSchemaAsync(services.Connection, token).ConfigureAwait(false)
        : services.StorageDriver.GetDefaultSchema(services.Connection);

            services.MappingResolver = MappingResolver.Create(configuration, context.NodeConfiguration, defaultSchemaInfo);
            BuildExternalServices(services, configuration);
            services.Lock();

            context.TypeIdProvider = new TypeIdProvider(context);
        }
        private void BuildServices(UpgradeContext context)
        {
            var services      = context.Services;
            var configuration = context.Configuration;

            services.Configuration       = configuration;
            services.IndexFilterCompiler = new PartialIndexFilterCompiler();

            var descriptor     = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
            var driverFactory  = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
            var handlerFactory = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);
            var driver         = StorageDriver.Create(driverFactory, configuration);

            services.HandlerFactory = handlerFactory;
            services.StorageDriver  = driver;
            services.NameBuilder    = new NameBuilder(configuration, driver.ProviderInfo);
            BuildExternalServices(services, context);

            services.Lock();

            context.TypeIdProvider = new TypeIdProvider(context);
        }