/// <summary>Initializes a new instance of the <see cref="T:System.Object" /> class.</summary> public static IServiceCollection AddHorizonORM(this IServiceCollection services, IConfiguration configuration, ServiceLifetime contextLifetime = ServiceLifetime.Scoped, string section = "DbConfig") { MutiDbOperate connectOptions = new MutiDbOperate(); configuration.GetSection(section).Bind(connectOptions); //var connectOptions = configuration.GetSection(section).Get<List<MutiDbOperate>>(); if (connectOptions != null) { //new HorizonDataClient(connectOptions); if (contextLifetime == ServiceLifetime.Scoped) { services.AddScoped(s => new HorizonDataClient(connectOptions)); } if (contextLifetime == ServiceLifetime.Singleton) { services.AddSingleton(s => new HorizonDataClient(connectOptions)); } if (contextLifetime == ServiceLifetime.Transient) { services.AddTransient(s => new HorizonDataClient(connectOptions)); } } return(services); }
public HorizonDataClient(MutiDbOperate config) { Console.WriteLine("horizonDataclinet is start......"); Func <List <SlaveConnectionConfig> > action = () => { var list = new List <SlaveConnectionConfig>(); if (config.SlaveConnections.Count() < 1) { throw new Exception("db config file is error!"); } foreach (var item in config.SlaveConnections) { list.Add(new SlaveConnectionConfig() { HitRate = item.HitRate, ConnectionString = item.ConnectionString }); } return(list); }; SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = config.ConnectionString, //Master Connection DbType = (DbType)config.DbType, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, //是否自动关闭连接 IsShardSameThread = true, //共享线程 SlaveConnectionConfigs = action() }); db.Aop.OnLogExecuted = (s, p) => { Log.Information(db.Ado.Connection.ConnectionString); Log.Information("sql: " + s); Log.Information(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); }; }