Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        private void OpenDatabase()
        {
            var cfg = PersistenceConfig.GetOrCreateDbConfiguration(this.DataSource.Name, false);

            _dbContext = cfg.CreateDbContext();
            this.AddDisposable(_dbContext);

            //
            base.SetConnectionState(true);
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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}\"");
            }
        }
Ejemplo n.º 6
0
 public string GetConfig(PersistenceConfig config, string value)
 {
     return(PlayerPrefs.GetString(config.ToString()));
 }
Ejemplo n.º 7
0
 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());
        }
Ejemplo n.º 9
0
        public DbConfiguration GetConfig <T>() where T : Entity
        {
            var dataSource = PersistenceConfig.GetDataSource(typeof(T));

            return(PersistenceConfig.GetOrCreateDbConfiguration(dataSource.Name, false));
        }