sqlsugar 配置
This commit is contained in:
parent
58b21eba1c
commit
95bb35a7ec
@ -97,10 +97,11 @@ builder.Services.AddSwaggerConfig();
|
||||
builder.Services.AddDirectoryBrowser();
|
||||
|
||||
var app = builder.Build();
|
||||
//全局配置
|
||||
InternalApp.ServiceProvider = app.Services;
|
||||
InternalApp.Configuration = builder.Configuration;
|
||||
InternalApp.WebHostEnvironment = app.Environment;
|
||||
//初始化db sqlsugar
|
||||
//初始化db和 配置sqlsugar 然后注入IOC容器,然后AOP配置
|
||||
builder.Services.AddDb(app.Environment);
|
||||
|
||||
//使用全局异常中间件
|
||||
|
||||
@ -14,6 +14,14 @@
|
||||
"DbType": 0, //数据库类型 MySql = 0, SqlServer = 1, Oracle = 3,PgSql = 4
|
||||
"ConfigId": "0", //多租户唯一标识
|
||||
"IsAutoCloseConnection": true
|
||||
},
|
||||
{
|
||||
//"Conn": "Data Source=139.224.232.211;User ID=root;Password=doantech123;Initial Catalog=GXAssembly;Port=3308",
|
||||
// "Conn": "Data Source=127.0.0.1;User ID=root;Password=123456;Initial Catalog=GXAssembly;Port=3306",
|
||||
"Conn": "Data Source=192.168.0.58;User ID=root;Password=123456;Initial Catalog=GXAssembly;Port=3306",
|
||||
"DbType": 0, //数据库类型 MySql = 0, SqlServer = 1, Oracle = 3,PgSql = 4
|
||||
"ConfigId": "1", //多租户唯一标识
|
||||
"IsAutoCloseConnection": true
|
||||
}
|
||||
//...下面添加更多的数据库源
|
||||
],
|
||||
|
||||
@ -30,7 +30,7 @@ namespace DOAN.Repository
|
||||
public BaseRepository(ISqlSugarClient context = null) : base(context)
|
||||
{
|
||||
//通过特性拿到ConfigId
|
||||
// C# 中使用反射来获取一个类型 (T) 上定义的自定义属性 (TenantAttribute) 的值。
|
||||
//这个方法会查找应用在类型 T 上的 TenantAttribute 自定义属性。如果找到了该属性,它将返回该属性的实例;如果没有找到
|
||||
var configId = typeof(T).GetCustomAttribute<TenantAttribute>()?.configId;
|
||||
if (configId != null)
|
||||
{
|
||||
|
||||
@ -15,7 +15,8 @@ namespace DOAN.ServiceCore.SqlSugar
|
||||
/// </summary>
|
||||
public static void InitDb()
|
||||
{
|
||||
var db = DbScoped.SugarScope;
|
||||
var db = DbScoped.SugarScope.GetConnection(0);
|
||||
|
||||
//建库:如果不存在创建数据库存在不会重复创建
|
||||
db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库
|
||||
|
||||
|
||||
@ -22,6 +22,7 @@ namespace DOAN.ServiceCore.SqlSugar
|
||||
var options = App.OptionsSetting;
|
||||
List<DbConfigs> dbConfigs = options.DbConfigs;
|
||||
|
||||
// 数据库连接配置
|
||||
var iocList = new List<IocConfig>();
|
||||
foreach (var item in dbConfigs)
|
||||
{
|
||||
@ -33,8 +34,11 @@ namespace DOAN.ServiceCore.SqlSugar
|
||||
IsAutoCloseConnection = item.IsAutoCloseConnection
|
||||
});
|
||||
}
|
||||
//SqlSugar.IOC 配置注入容器
|
||||
SugarIocServices.AddSqlSugar(iocList);
|
||||
ICacheService cache = new SqlSugarCache();
|
||||
|
||||
// 配置参数
|
||||
SugarIocServices.ConfigurationSugar(db =>
|
||||
{
|
||||
var u = App.User;
|
||||
@ -47,6 +51,7 @@ namespace DOAN.ServiceCore.SqlSugar
|
||||
|
||||
iocList.ForEach(iocConfig =>
|
||||
{
|
||||
//数据库Aop设置
|
||||
SetSugarAop(db, iocConfig, cache);
|
||||
});
|
||||
});
|
||||
@ -68,30 +73,69 @@ namespace DOAN.ServiceCore.SqlSugar
|
||||
var config = db.GetConnectionScope(iocConfig.ConfigId).CurrentConnectionConfig;
|
||||
var showDbLog = AppSettings.Get<bool>("ShowDbLog");
|
||||
string configId = config.ConfigId;
|
||||
////SQL执行前
|
||||
db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) =>
|
||||
{
|
||||
//if (showDbLog)
|
||||
//{
|
||||
// string log = $"【db{configId} SQL】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n";
|
||||
// if (sql.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase))
|
||||
// {
|
||||
// logger.Info(log);
|
||||
// }
|
||||
// else if (sql.StartsWith("UPDATE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase))
|
||||
// {
|
||||
// logger.Warn(log);
|
||||
// }
|
||||
// else if (sql.StartsWith("DELETE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("TRUNCATE", StringComparison.OrdinalIgnoreCase))
|
||||
// {
|
||||
// logger.Error(log);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// log = $"【db{configId} SQL语句】dbo.{sql} {string.Join(", ", pars.Select(x => x.ParameterName + " = " + GetParsValue(x)))};\n";
|
||||
// logger.Info(log);
|
||||
// }
|
||||
// // 计算所需时间
|
||||
//}
|
||||
};
|
||||
//SQL执行完
|
||||
db.GetConnectionScope(configId).Aop.OnLogExecuted = (sql, pars) =>
|
||||
{
|
||||
|
||||
|
||||
if (showDbLog)
|
||||
{
|
||||
//执行完了可以输出SQL执行时间 (OnLogExecutedDelegate)
|
||||
string spendTime = "\n 这个sql耗时" + db.Ado.SqlExecutionTime.TotalSeconds.ToString() + "秒";
|
||||
string log = $"【db{configId} SQL】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n";
|
||||
if (sql.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
logger.Info(log);
|
||||
logger.Info(log+ spendTime);
|
||||
|
||||
|
||||
}
|
||||
else if (sql.StartsWith("UPDATE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
logger.Warn(log);
|
||||
logger.Warn(log+ spendTime);
|
||||
|
||||
}
|
||||
else if (sql.StartsWith("DELETE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("TRUNCATE", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
logger.Error(log);
|
||||
logger.Error(log + spendTime);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
log = $"【db{configId} SQL语句】dbo.{sql} {string.Join(", ", pars.Select(x => x.ParameterName + " = " + GetParsValue(x)))};\n";
|
||||
logger.Info(log);
|
||||
logger.Info(log+ spendTime);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// SQL报错
|
||||
db.GetConnectionScope(configId).Aop.OnError = (ex) =>
|
||||
{
|
||||
//var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value));
|
||||
@ -99,9 +143,13 @@ namespace DOAN.ServiceCore.SqlSugar
|
||||
string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n";
|
||||
logger.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}");
|
||||
};
|
||||
|
||||
|
||||
db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) =>
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
//差异日志功能
|
||||
db.GetConnectionScope(configId).Aop.OnDiffLogEvent = it =>
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user