public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAbpDbContext <AbpBaseDataContext>(); string connectString = default; Configure <AbpDbConnectionOptions>(options => { connectString = WholeShared.SqlConnectString; options.ConnectionStrings.Default = connectString; }); FreeSql.DataType dataType = default; Configure <AbpDbContextOptions>(options => { switch (WholeShared.DataType) { case AbpBaseDataType.Sqlite: options.UseSqlite <AbpBaseDataContext>(); dataType = FreeSql.DataType.Sqlite; break; case AbpBaseDataType.Mysql: options.UseMySQL <AbpBaseDataContext>(); dataType = FreeSql.DataType.MySql; break; case AbpBaseDataType.Sqlserver: options.UseSqlServer <AbpBaseDataContext>(); dataType = FreeSql.DataType.SqlServer; break; } }); FreesqlContext.Init(connectString, dataType); context.Services.AddSingleton(typeof(IFreeSql), FreesqlContext.FreeselInstance); context.Services.AddTransient(typeof(FreesqlContext), typeof(FreesqlContext)); }
private IFreeSql CreateDb(FreeSql.DataType dbType, DbInfo currentDbOption) { var master = currentDbOption.ConnectionStrings?.FirstOrDefault(e => e.UseType == DbUseType.Master); if (master == null) { throw new ArgumentNullException($"请设置租户 {Tenant.Code} 的主库连接字符串"); } var slaveConnectionStrings = currentDbOption.ConnectionStrings?.Where(e => e.UseType == DbUseType.Slave).Select(e => e.ConnectionString).ToArray(); var freeSqlBuilder = new FreeSql.FreeSqlBuilder() .UseConnectionString(dbType, master.ConnectionString); if (slaveConnectionStrings?.Length > 0) { freeSqlBuilder = freeSqlBuilder.UseSlave(slaveConnectionStrings); } if (_env.IsDevelopment()) { freeSqlBuilder = freeSqlBuilder.UseAutoSyncStructure(true); //自动同步实体结构【开发环境必备】 } var fsql = freeSqlBuilder.Build(); fsql.Aop.ConfigEntityProperty += ConfigEntityProperty; fsql.Aop.CurdBefore += CurdBefore; fsql.Aop.AuditValue += AuditValue; //fsql.Aop.SyncStructureAfter += SyncStructureAfter; DataFilterAsync(fsql); return(fsql); }
private static string GetConnectionConfig(FreeSql.DataType type, string name) { if (!configDic.ContainsKey(name)) { string connstr = System.Configuration.ConfigurationManager.ConnectionStrings[name].ConnectionString; configDic.Add(name, connstr); } return(configDic[name]); }
public static void Init(string connectStr, FreeSql.DataType dataType = FreeSql.DataType.Sqlite) { Freesql_Instance = new FreeSql.FreeSqlBuilder() .UseNameConvert(NameConvertType.PascalCaseToUnderscore) .UseConnectionString(dataType, connectStr) //.UseAutoSyncStructure(true) // 自动同步实体结构到数据库,生产环境禁止使用! .Build(); OnModelCreating(Freesql_Instance); }
public static string GetConnectionString(FreeSql.DataType dataType, string uid, string pwd, string host, string dataName, string port, int valid = 0) { var connString = keyValues[valid == 0 ? dataType.ToString() : dataType.ToString() + "1"]; if (host.Length == 1 && host == ".") { host = "127.0.0.1"; } connString = string.Format(connString, uid, pwd, host, dataType == FreeSql.DataType.SqlServer ? port == "1433"?"":$",{port}": port, dataName); return(connString); }
public static void AddFreeSql(object key, string connectionString, FreeSql.DataType dataType) { if (!DataBase.ContainsKey(key)) { Lazy <IFreeSql> fsql = new Lazy <IFreeSql>(() => { return(new FreeSql.FreeSqlBuilder() .UseConnectionString(dataType, connectionString) .UseLazyLoading(true) //开启延时加载功能 //.UseAutoSyncStructure(true) //自动同步实体结构到数据库 .UseMonitorCommand( cmd => Trace.WriteLine(cmd.CommandText), //监听SQL命令对象,在执行前 (cmd, traceLog) => Console.WriteLine(traceLog)) .UseLazyLoading(true) .Build()); }); DataBase.Add(key, fsql); } }
public static IFreeSql GetFreeSqlClient(FreeSql.DataType DbType, string name = "default") { if (!DbCache.ContainsKey(name)) { fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(DbType, GetConnectionConfig(DbType, name)) .UseAutoSyncStructure(true) //自动同步实体结构到数据库 .UseSyncStructureToUpper(true) //转大小写同步(oracle表都是大写,需要开启大小同步,否则会创建一个名称小写的新表) .UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText)) //跟踪SQL执行语句 .Build(); // fsql = new FreeSql.FreeSqlBuilder() //.UseConnectionString(FreeSql.DataType.Sqlite,GetConnectionConfig(DbType, name)) //.UseAutoSyncStructure(true) //自动同步实体结构到数据库 //.Build(); DbCache.Add(name, fsql); } return(DbCache[name]); }
public static void Initialize(IFreeSql freeSql, FreeSql.DataType dataType) { var textType = dataType == FreeSql.DataType.SqlServer ? "nvarchar(max)" : "text"; freeSql.CodeFirst.ConfigEntity <RequestInfo>(x => { x.Index("idx_info_id", nameof(RequestInfo.Id), true); x.Index("idx_info_service", nameof(RequestInfo.Service)); x.Index("idx_info_instance", nameof(RequestInfo.Instance)); x.Index("idx_info_milliseconds", nameof(RequestInfo.Milliseconds)); x.Index("idx_info_statuscode", nameof(RequestInfo.StatusCode)); x.Index("idx_info_createtime", nameof(RequestInfo.CreateTime)); x.Index("idx_info_route", nameof(RequestInfo.Route)); x.Index("idx_info_service_instance", "Service,Instance"); x.Index("idx_info_instance_time", "Instance,CreateTime"); x.Index("idx_info_id_route_statuscode_time", "Id,Route,StatusCode,CreateTime"); x.Index("idx_info_service_parentservice_time", "Service,ParentService,CreateTime"); x.Index("idx_info_service_instance_milliseconds_time", "Service,Instance,Milliseconds,CreateTime"); x.Index("idx_info_service_instance_statuscode_time", "Service,Instance,StatusCode,CreateTime"); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.Service).StringLength(50); x.Property(k => k.ParentService).StringLength(50); x.Property(k => k.Instance).StringLength(50); x.Property(k => k.Route).StringLength(100); x.Property(k => k.Url).StringLength(100); x.Property(k => k.RequestType).StringLength(10); x.Property(k => k.Method).StringLength(10); x.Property(k => k.RemoteIP).StringLength(50); x.Property(k => k.LoginUser).StringLength(50); }); freeSql.CodeFirst.ConfigEntity <RequestDetail>(x => { x.Index("idx_detail_id", nameof(RequestDetail.Id), true); x.Index("idx_detail_request_id", nameof(RequestDetail.RequestId)); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.Scheme).StringLength(10); x.Property(k => k.QueryString).DbType(textType); x.Property(k => k.Header).DbType(textType); x.Property(k => k.Cookie).DbType(textType); x.Property(k => k.RequestBody).DbType(textType); x.Property(k => k.ResponseBody).DbType(textType); x.Property(k => k.ErrorMessage).DbType(textType); x.Property(k => k.ErrorStack).DbType(textType); }); freeSql.CodeFirst.ConfigEntity <Performance>(x => { x.Index("idx_performance_id", nameof(Performance.Id), true); x.Index("idx_per_service", nameof(Performance.Service)); x.Index("idx_per_instance", nameof(Performance.Instance)); x.Index("idx_per_service_instance", "Service,Instance"); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.Service).StringLength(50); x.Property(k => k.Instance).StringLength(50); }); freeSql.CodeFirst.ConfigEntity <MonitorJob>(x => { x.Index("idx_job_id", nameof(MonitorJob.Id), true); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.Title).StringLength(255); x.Property(k => k.Description).StringLength(255); x.Property(k => k.CronLike).StringLength(50); x.Property(k => k.WebHook).StringLength(255); x.Property(k => k.Emails).StringLength(255); x.Property(k => k.Mobiles).StringLength(50); x.Property(k => k.Payload).DbType(textType); x.Property(k => k.Service).StringLength(50); x.Property(k => k.Instance).StringLength(50); x.Property(k => k.StartTime).StringLength(50); x.Property(k => k.EndTime).StringLength(50); }); freeSql.CodeFirst.ConfigEntity <MonitorAlarm>(x => { x.Index("idx_alarm_id", nameof(MonitorAlarm.Id), true); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.JobId).StringLength(50); x.Property(k => k.Body).StringLength(1000); }); freeSql.CodeFirst.ConfigEntity <SysUser>(x => { x.Index("idx_user_id", nameof(SysUser.Id), true); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.UserName).StringLength(50); x.Property(k => k.Password).StringLength(50); }); freeSql.CodeFirst.ConfigEntity <SysConfig>(x => { x.Index("idx_config_id", nameof(SysConfig.Id), true); x.Property(k => k.Id).IsPrimary(true); x.Property(k => k.Key).StringLength(50); x.Property(k => k.Value).StringLength(255); }); }