Ejemplo n.º 1
0
        public static IServiceCollection AddMyStagingDbContenxt(this IServiceCollection services, IConfiguration configuration)
        {
            var options = new StagingOptions("MySql", configuration["ConnectionStrings:MySql"]);

            services.AddScoped(fct => new IdentityHostDbContext(options));
            return(services);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///  初始化数据库连接
        /// </summary>
        /// <param name="options"></param>
        public static void InitConnection(StagingOptions options)
        {
            CheckNotNull.NotNull(options, nameof(options));
            CheckNotNull.NotEmpty(options.ConnectionMaster, nameof(options.ConnectionMaster));

            Options = options;

            // 初始化主库连接实例
            ConnectionStringConfiguration conn = new ConnectionStringConfiguration()
            {
                ConnectionString = options.ConnectionMaster,
                DbConnection     = new Npgsql.NpgsqlConnection(options.ConnectionMaster)
            };

            InstanceMaster = new MasterExecute(options.Logger, conn);

            // 初始化从库连接实例
            List <ConnectionStringConfiguration> connList = GetSlaves(options.ConnectionSlaves);

            if (connList != null)
            {
                InstanceSlave = new SlaveExecute(options.Logger, connList);
            }

            if (options.CacheOptions != null && options.CacheOptions.Cache != null)
            {
                CacheManager = new CacheManager(options.CacheOptions);
            }
        }
Ejemplo n.º 3
0
        public void Start()
        {
            options     = new StagingOptions("user", connectionString);
            userContext = new PgsqlDbContext(options);

            Insert();
            Delete();
            Update();
            Select();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            var options = new StagingOptions("MySql", "server=127.0.0.1;user id=root;password=root;");

            dbContext = new MysqlDbContext(options);

            AddUpdateDelete();
            Query();
            Transaction();
            Console.WriteLine("success.....");
            Console.ReadKey();
        }
Ejemplo n.º 5
0
        public DeleteBuilderTest()
        {
            LoggerFactory factory = new LoggerFactory();
            var           log     = factory.CreateLogger <PgSqlHelper>();
            var           options = new StagingOptions()
            {
                Logger           = log,
                ConnectionMaster = ConstantUtil.CONNECTIONSTRING
            };

            _startup.Init(options);
        }
Ejemplo n.º 6
0
        public static void Init(StagingOptions options)
        {
            ContextManager.InitConnection(options);

            Type[] jsonTypes = { typeof(JToken), typeof(JObject), typeof(JArray) };
            NpgsqlNameTranslator translator = new NpgsqlNameTranslator();

            NpgsqlConnection.GlobalTypeMapper.UseJsonNet(jsonTypes);

            NpgsqlConnection.GlobalTypeMapper.MapEnum <Et_data_state>("public.et_data_state", translator);
            NpgsqlConnection.GlobalTypeMapper.MapEnum <Et_role>("public.et_role", translator);
        }
Ejemplo n.º 7
0
        public InsertBuilderTest(ITestOutputHelper outPut)
        {
            output = outPut;
            LoggerFactory factory = new LoggerFactory();
            var           log     = factory.CreateLogger <PgSqlHelper>();
            var           options = new StagingOptions()
            {
                ConnectionMaster = ConstantUtil.CONNECTIONSTRING,
                Logger           = log
            };

            _startup.Init(options);
        }
Ejemplo n.º 8
0
        public void Initialize(ProjectConfig config)
        {
            Tables = new List <TableInfo>();
            StagingOptions options = new StagingOptions(config.ProjectName, config.ConnectionString)
            {
                Provider = ProviderType.MySql
            };

            string schema = new MySqlConnection(options.Master).Database;

            dbContext = new MySqlDbContext(options);

            #region dir

            CheckNotNull.NotEmpty(config.ProjectName, nameof(config.ProjectName));

            if (config.Mode == GeneralInfo.Db)
            {
                CheckNotNull.NotEmpty(config.OutputDir, nameof(config.OutputDir));
                Config = new GeneralConfig
                {
                    OutputDir   = config.OutputDir,
                    ProjectName = config.ProjectName,
                    ModelPath   = config.OutputDir
                };

                if (!Directory.Exists(Config.ModelPath))
                {
                    Directory.CreateDirectory(Config.ModelPath);
                }
            }
            #endregion

            #region Tables

            string _sqltext = $@"SELECT TABLE_SCHEMA,TABLE_NAME,(CASE WHEN TABLE_TYPE = 'BASE TABLE' THEN 'TABLE'ELSE TABLE_TYPE END ) AS TABLE_TYPE 
FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '{schema}'";
            dbContext.Execute.ExecuteDataReader(dr =>
            {
                var table = new TableInfo()
                {
                    Schema = dr["TABLE_SCHEMA"].ToString(),
                    Name   = dr["TABLE_NAME"].ToString(),
                    Type   = Enum.Parse <TableType>(dr["TABLE_TYPE"].ToString(), true)
                };
                GetFields(table);
                Tables.Add(table);
            }, CommandType.Text, _sqltext);

            #endregion
        }
Ejemplo n.º 9
0
        public QueryContextTest(ITestOutputHelper output)
        {
            this.output = output;
            LoggerFactory factory = new LoggerFactory();
            var           log     = factory.CreateLogger <PgSqlHelper>();
            var           options = new StagingOptions()
            {
                ConnectionMaster = ConstantUtil.CONNECTIONSTRING,
                ConnectionSlaves = new string[] { ConstantUtil.CONNECTIONSTRING, ConstantUtil.CONNECTIONSTRING },
                Logger           = log
            };

            _startup.Init(options);
        }
Ejemplo n.º 10
0
        public QueryContextTest(ITestOutputHelper output)
        {
            this.output = output;
            LoggerFactory factory = new LoggerFactory();
            var           log     = factory.CreateLogger <PgSqlHelper>();
            var           options = new StagingOptions()
            {
                ConnectionMaster = ConstantUtil.CONNECTIONSTRING,
                ConnectionSlaves = new string[] { ConstantUtil.CONNECTIONSTRING, ConstantUtil.CONNECTIONSTRING },
                Logger           = log
            };

            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Console.OutputEncoding = Encoding.UTF8;
            _startup.Init(options);
        }
Ejemplo n.º 11
0
        /// <summary>
        ///  初始化数据库连接
        /// </summary>
        /// <param name="logger">日志组件</param>
        /// <param name="connectionMaster">可读写数据库连接</param>
        /// <param name="connectionStringSlave">从库数据库连接</param>
        /// <param name="connectionSlaves">从库连接池总大小,如果不指定(默认 -1),如果没有设定 maximum pool size 的值,则从库中读取 maximum pool size 设定的值进行累计</param>
        public static void InitConnection(StagingOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(StagingOptions));
            }
            if (string.IsNullOrEmpty(options.ConnectionMaster))
            {
                throw new ArgumentNullException("connectionString not null");
            }

            Options = options;

            // 初始化主库连接实例
            int poolsizeMaster = GetPollSize(options.ConnectionMaster);
            ConnectionStringConfiguration connS = new ConnectionStringConfiguration()
            {
                ConnectionString = options.ConnectionMaster,
                MaxConnection    = poolsizeMaster,
                DbConnection     = new Npgsql.NpgsqlConnection(options.ConnectionMaster)
            };

            InstanceMaster = new MasterExecute(options.Logger, connS);

            // 初始化从库连接实例
            List <ConnectionStringConfiguration> connList = GetSlaves(options.ConnectionSlaves, out int poolsizeSlave);

            if (options.SlavesMaxPool != -1)
            {
                poolsizeSlave = options.SlavesMaxPool;
            }
            if (connList != null)
            {
                InstanceSlave = new SlaveExecute(options.Logger, connList, poolsizeSlave);
            }

            if (options.CacheOptions != null && options.CacheOptions.Cache != null)
            {
                Console.WriteLine("options.CacheOptions.Cache:{0}", options.CacheOptions.Cache == null);
                CacheManager = new CacheManager(options.CacheOptions);
            }
        }
Ejemplo n.º 12
0
        public void Initializer(StagingOptions options)
        {
            CheckNotNull.NotNull(options, nameof(options));
            CheckNotNull.NotNull(options.Name, nameof(options.Name));

            Options = options;
            if (options.CacheOptions != null && options.CacheOptions.Cache != null)
            {
                CacheManager = new CacheManager(options.CacheOptions);
            }

            InternalDbContext.Initializer(Options);
            var properties = this.GetType().GetProperties();

            foreach (var pi in properties)
            {
                if (pi.PropertyType.Name == "DbSet`1")
                {
                    var piObject = Activator.CreateInstance(pi.PropertyType);
                    pi.SetValue(this, piObject);
                    var genericType       = pi.PropertyType.GenericTypeArguments[0];
                    var childreProperties = pi.PropertyType.GetProperties();
                    foreach (var children in childreProperties)
                    {
                        var interfaceType = InternalDbContext.GetInterfaceType(children.PropertyType.Name, genericType);
                        if (interfaceType != null)
                        {
                            children.SetValue(piObject, Activator.CreateInstance(interfaceType, this));
                        }
                    }
                }
            }
            InternalDbContext.SERVICES.TryGetValue(typeof(IStagingConnection).Name, out Type iop);
            Options.Connection = (IStagingConnection)Activator.CreateInstance(iop);
            this.Refresh(Options.Master, Options.Slaves);
        }
Ejemplo n.º 13
0
        public static void Initializer(StagingOptions options)
        {
            if (SERVICES.Count == 0)
            {
                lock (objlock)
                {
                    if (SERVICES.Count > 0)
                    {
                        return;
                    }

                    var fileName     = "MyStaging." + options.Provider + ".dll";
                    var providerFile = System.IO.Directory.GetFiles(System.IO.Directory.GetCurrentDirectory(), fileName, SearchOption.AllDirectories).FirstOrDefault();
                    if (string.IsNullOrEmpty(providerFile))
                    {
                        throw new FileNotFoundException(fileName);
                    }

                    var assembly = Assembly.LoadFrom(providerFile);
                    var types    = assembly.GetTypes();
                    // 初始化桥接对象
                    foreach (var type in types)
                    {
                        var interfaces = type.GetInterfaces();
                        foreach (var inter in interfaces)
                        {
                            if (INTERFACES.Contains(inter.Name))
                            {
                                SERVICES.TryAdd(inter.Name, type);
                                break;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 14
0
 public MysqlDbContext(StagingOptions options) : base(options, ProviderType.MySql)
 {
 }
Ejemplo n.º 15
0
 public static void Init(StagingOptions options)
 {
     PgSqlHelper.InitConnection(options);
 }
Ejemplo n.º 16
0
 public PgDbContext(StagingOptions options) : base(options, ProviderType.PostgreSQL)
 {
 }
Ejemplo n.º 17
0
        public void Initialize(ProjectConfig config)
        {
            Tables = new List <TableInfo>();
            StagingOptions options = new StagingOptions(config.ProjectName, config.ConnectionString)
            {
                Provider = ProviderType.PostgreSQL
            };

            dbContext = new PgDbContext(options);

            #region dir

            CheckNotNull.NotEmpty(config.ProjectName, nameof(config.ProjectName));

            if (config.Mode == GeneralInfo.Db)
            {
                CheckNotNull.NotEmpty(config.OutputDir, nameof(config.OutputDir));
                Config = new GeneralConfig
                {
                    OutputDir   = config.OutputDir,
                    ProjectName = config.ProjectName,
                    ModelPath   = config.OutputDir
                };

                if (!Directory.Exists(Config.ModelPath))
                {
                    Directory.CreateDirectory(Config.ModelPath);
                }
            }
            #endregion

            #region Schemas
            string[] filters = new string[this.Filters.Count];
            for (int i = 0; i < Filters.Count; i++)
            {
                filters[i] = $"'{Filters[i]}'";
            }

            string        sql     = $@"SELECT schema_name FROM information_schema.schemata WHERE SCHEMA_NAME NOT IN({string.Join(",", filters)}) ORDER BY SCHEMA_NAME; ";
            List <string> schemas = new List <string>();
            dbContext.Execute.ExecuteDataReader(dr =>
            {
                schemas.Add(dr[0].ToString());
            }, CommandType.Text, sql);
            #endregion

            #region Tables
            foreach (var schema in schemas)
            {
                string _sqltext = $@"SELECT table_name,'table' as type FROM INFORMATION_SCHEMA.tables WHERE table_schema='{schema}' AND table_type='BASE TABLE'
UNION ALL
SELECT table_name,'view' as type FROM INFORMATION_SCHEMA.views WHERE table_schema = '{schema}'";
                dbContext.Execute.ExecuteDataReader(dr =>
                {
                    var table = new TableInfo()
                    {
                        Schema = schema,
                        Name   = dr["table_name"].ToString(),
                        Type   = dr["type"].ToString() == "table" ? TableType.Table : TableType.View
                    };
                    GetFields(table);
                    Tables.Add(table);
                }, CommandType.Text, _sqltext);
            }
            #endregion
        }
Ejemplo n.º 18
0
 public IdentityHostDbContext(StagingOptions options) : base(options, ProviderType.MySql)
 {
 }
Ejemplo n.º 19
0
 public DbContext(StagingOptions options)
 {
     Initializer(options);
 }
Ejemplo n.º 20
0
 public DbContext(StagingOptions options, ProviderType provider)
 {
     options.Provider = provider;
     Initializer(options);
 }