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); }
/// <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); } }
public void Start() { options = new StagingOptions("user", connectionString); userContext = new PgsqlDbContext(options); Insert(); Delete(); Update(); Select(); }
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(); }
public DeleteBuilderTest() { LoggerFactory factory = new LoggerFactory(); var log = factory.CreateLogger <PgSqlHelper>(); var options = new StagingOptions() { Logger = log, ConnectionMaster = ConstantUtil.CONNECTIONSTRING }; _startup.Init(options); }
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); }
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); }
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 }
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); }
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); }
/// <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); } }
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); }
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; } } } } } }
public MysqlDbContext(StagingOptions options) : base(options, ProviderType.MySql) { }
public static void Init(StagingOptions options) { PgSqlHelper.InitConnection(options); }
public PgDbContext(StagingOptions options) : base(options, ProviderType.PostgreSQL) { }
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 }
public IdentityHostDbContext(StagingOptions options) : base(options, ProviderType.MySql) { }
public DbContext(StagingOptions options) { Initializer(options); }
public DbContext(StagingOptions options, ProviderType provider) { options.Provider = provider; Initializer(options); }