using DS.Module.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NLog;
using SqlSugar;
using LogLevel = NLog.LogLevel;
namespace DS.Module.SqlSugar;
///
/// SqlSugar 启动服务
///
public static class SqlsugarInstall
{
///
/// 数据库连接字符串
///
private static string DbInfo = AppSetting.Configuration["ConnectionStrings:DbInfo"];
///
/// 数据库类型
///
private static string DbType = AppSetting.Configuration["ConnectionStrings:DbType"];
static readonly Logger Logger = LogManager.GetCurrentClassLogger();
// private ILogger _logger;
///
/// 将模块服务添加到依赖注入服务容器中
///
/// 依赖注入服务容器
///
public static IServiceCollection AddSqlsugarInstall(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
{
DbType = DbType.ToEnum(),
ConnectionString = DbInfo,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute,
// AopEvents=aop
},
db =>
{
//单例参数配置,所有上下文生效
db.Ado.CommandTimeOut = 30;
db.Aop.OnLogExecuting = (sql, pars) =>
{
Logger.Log(LogLevel.Info, DateTime.Now.ToString() + "\r\n" + sql + "\r\n" + UtilMethods.GetSqlString(DbType.ToEnum(), sql, pars));
// Logger.Log(LogLevel.Info, DateTime.Now.ToString() + "\r\n" + sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
// Logger.Trace(DateTime.Now.ToString() + "\r\n" + sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
};
db.Aop.OnError = (exp) => //执行SQL 错误事件
{
Logger.Error(DateTime.Now.ToString() + "\r\n" + exp.Sql + "\r\n" + exp.Parametres);
};
});
services.AddSingleton(sqlSugar); //这边是SqlSugarScope用AddSingleton
return services;
}
}