public void Init()
        {
            string databaseFileName = Path.GetTempFileName();
            IDataServicesProviderFactory dataServicesProviderFactory = new DataServicesProviderFactory(new[] {
                new Meta <CreateDataServicesProvider>(
                    (dataFolder, connectionString) => new SqlCeDataServicesProvider(dataFolder, connectionString),
                    new Dictionary <string, object> {
                    { "ProviderName", "SqlCe" }
                })
            });

            var builder = new ContainerBuilder();

            builder.RegisterInstance(new ShellBlueprint());
            builder.RegisterInstance(new ShellSettings {
                Name = ShellSettings.DefaultName, DataTablePrefix = "Test", DataProvider = "SqlCe"
            });
            builder.RegisterInstance(dataServicesProviderFactory).As <IDataServicesProviderFactory>();
            builder.RegisterInstance(AppDataFolderTests.CreateAppDataFolder(Path.GetDirectoryName(databaseFileName))).As <IAppDataFolder>();

            builder.RegisterType <SqlCeDataServicesProvider>().As <IDataServicesProvider>();
            builder.RegisterType <SessionConfigurationCache>().As <ISessionConfigurationCache>();
            builder.RegisterType <SessionFactoryHolder>().As <ISessionFactoryHolder>();
            builder.RegisterType <CompositionStrategy>().As <ICompositionStrategy>();
            builder.RegisterType <ExtensionManager>().As <IExtensionManager>();
            builder.RegisterType <SchemaCommandGenerator>().As <ISchemaCommandGenerator>();
            builder.RegisterType <StubCacheManager>().As <ICacheManager>();
            builder.RegisterType <StubParallelCacheContext>().As <IParallelCacheContext>();
            builder.RegisterType <StubAsyncTokenProvider>().As <IAsyncTokenProvider>();
            builder.RegisterType <StubHostEnvironment>().As <IHostEnvironment>();

            _container              = builder.Build();
            _extensionManager       = _container.Resolve <IExtensionManager>();
            _schemaCommandGenerator = _container.Resolve <ISchemaCommandGenerator>();
        }
Exemple #2
0
        /// <summary>
        /// 初始化注入容器
        /// </summary>
        /// <param name="registrations"></param>
        /// <returns></returns>
        public IContainer CreateHostContainer(Action <ContainerBuilder> registrations)
        {
            var builder = new ContainerBuilder();

            builder.RegisterModule(new CacheModule());
            builder.RegisterModule(new DataModule());
            builder.RegisterType <DefaultCacheHolder>().As <ICacheHolder>().SingleInstance();
            builder.RegisterType <DefaultCacheContextAccessor>().As <ICacheContextAccessor>().SingleInstance();
            IDataServicesProviderFactory dataServicesProviderFactory = new DataServicesProviderFactory(new[] {
                new Meta <CreateDataServicesProvider>(
                    (dataFolder, connectionString) => new SqlServerDataServicesProvider(dataFolder, connectionString),
                    new Dictionary <string, object> {
                    { "ProviderName", "SqlServer" }
                }),
                new Meta <CreateDataServicesProvider>(
                    (dataFolder, connectionString) => new SqlCeDataServicesProvider(dataFolder, connectionString),
                    new Dictionary <string, object> {
                    { "ProviderName", "SqlCe" }
                }),
                new Meta <CreateDataServicesProvider>(
                    (dataFolder, connectionString) => new MySqlDataServicesProvider(dataFolder, connectionString),
                    new Dictionary <string, object> {
                    { "ProviderName", "MySql" }
                })
            });

            builder.RegisterInstance(dataServicesProviderFactory).As <IDataServicesProviderFactory>();

            /*
             *          builder.Register(x => new EfDataProviderManager(x.Resolve<DataSettings>())).As<BaseDataProviderManager>().InstancePerDependency();
             *          builder.Register(x => (IEfDataProvider)x.Resolve<BaseDataProviderManager>().LoadDataProvider()).As<IDataProvider>().InstancePerDependency();
             *          builder.Register(x => (IEfDataProvider)x.Resolve<BaseDataProviderManager>().LoadDataProvider()).As<IEfDataProvider>().InstancePerDependency();
             *          //初始化工作
             *          var efDataProviderManager = new EfDataProviderManager(DataSettingsHelper.GetBaseConfig());
             *          var dataProvider = (IEfDataProvider)efDataProviderManager.LoadDataProvider();
             *          dataProvider.InitConnectionFactory();
             *          builder.Register<IDbContext>(c => new PmSoftObjectContext(c.Resolve<DataSettings>().DataConnectionString)).InstancePerDependency();*/
            builder.RegisterType <InstallService>().As <IInstallService>().InstancePerDependency();
            if (registrations != null)
            {
                registrations(builder);
            }
            //注册配置信息
            builder.Register(c => new ShellSettings()
            {
                Settings         = DataSettingsHelper.GetBaseConfig(),
                RecordBlueprints = CachesRecordTable.Select(x => x.Value)
            }).As <ShellSettings>();
            return(builder.Build());
        }