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>(); }
/// <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()); }