public static IEnumerable <Repository> Create(IEnumerable <DataSource> dataSources, IRepositorySelect repositorySelection) { var repositories = new List <Repository>(); dataSources.ForEach(p => { var dbType = (DataBaseType)p.DbType; if (PersistenceConfig.IsRemoteDatabase(dbType)) { repositories.Add(new RepositoryRemote(p)); } else if (dbType == DataBaseType.Sqlite) { repositories.Add(new RepositorySqlite(p)); } else if (dbType == DataBaseType.CSV) { repositories.Add(new RepositoryCsvFile(p)); } else if (dbType == DataBaseType.Memory) { repositories.Add(new RepositoryMemory(p, repositorySelection)); } else { throw new Exception($"不支持的数据库类型 {dbType}。"); } }); return(repositories); }
private void OpenDatabase() { var cfg = PersistenceConfig.GetOrCreateDbConfiguration(this.DataSource.Name, false); _dbContext = cfg.CreateDbContext(); this.AddDisposable(_dbContext); // base.SetConnectionState(true); }
protected override void OnOpen() { this.DbConfig = PersistenceConfig.GetOrCreateDbConfiguration(this.DataSource.Name, false); // _scheduler = new ActiveObjectImpl(string.Format($"远程DB-{this.DataSource.Name} Scheudler线程")); this.AddDisposable(_scheduler); _scheduler.Start(); // 创建一个ConnectionMonitor并打开。 this.OpenDbConnectionMonitor(); }
/// <summary> /// 构建CSV数据路径。 /// </summary> private Dictionary <Type, string> BuildCsvDbPath() { var csvFiles = new Dictionary <Type, string>(); PersistenceConfig.GetDataSources(DataBaseType.CSV).ForEach(p => { var paths = p.Url.Split(new string[] { ";", ";" }, StringSplitOptions.RemoveEmptyEntries).Where(q => !string.IsNullOrWhiteSpace(q)); var count = p.TableDescriptors.Keys.Count; if (count != paths.Count()) { throw new Exception(string.Format("CSV配置有误,实体类型与文件个数不一致。")); } for (int i = 0; i < count; i++) { var type = p.TableDescriptors.Keys.ElementAt(i); csvFiles[type] = string.Format(@"{0}\{1}", HelperTools.CurrentDllPath, paths.ElementAt(i).Trim()); } }); return(csvFiles); }
public void Register(IContainerBuilder containerBuilder) { containerBuilder.RegisterSingleton <PersistenceConfig>(); var cfg = PersistenceConfig.Instance(); switch (cfg.Provider) { case RedisDbJsonConfig.Provider: { containerBuilder.RegisterSingleton <RedisDbJsonConfig>(); containerBuilder.RegisterSingleton <IRepository, RedisDbJsonRepository>(); containerBuilder.RegisterSingleton <IRedisDbJsonContext, RedisDbJsonContext>(); break; } case RedisDbBinaryConfig.Provider: { containerBuilder.RegisterSingleton <RedisDbBinaryConfig>(); containerBuilder.RegisterSingleton <IRepository, RedisDbBinaryRepository>(); containerBuilder.RegisterSingleton <IRedisDbContext, RedisDbContext>(); break; } case RocksDbConfig.Provider: { containerBuilder.RegisterSingleton <RocksDbConfig>(); containerBuilder.RegisterSingleton <IRepository, RocksDbRepository>(); containerBuilder.RegisterSingleton <IRocksDbContext, RocksDbContext>(); break; } default: throw new UnknownPersistentProvider($"The persistence configuration contains unknown provider \"{cfg.Provider}\""); } }
public string GetConfig(PersistenceConfig config, string value) { return(PlayerPrefs.GetString(config.ToString())); }
public void SetConfig(PersistenceConfig config, string value) { PlayerPrefs.SetString(config.ToString(), value); }
private IDatabase OpenDatabase(string dbSourceName) { var cfg = PersistenceConfig.GetOrCreateDbConfiguration(dbSourceName, true); return(cfg.Open()); }
public DbConfiguration GetConfig <T>() where T : Entity { var dataSource = PersistenceConfig.GetDataSource(typeof(T)); return(PersistenceConfig.GetOrCreateDbConfiguration(dataSource.Name, false)); }