2022-04-06 22:22:45 +08:00
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
|
using SqlSugar;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Yi.Framework.WebCore.MiddlewareExtend
|
|
|
|
|
|
{
|
|
|
|
|
|
public static class SqlsugarExtension
|
|
|
|
|
|
{
|
|
|
|
|
|
public static void AddSqlsugarServer(this IServiceCollection services)
|
|
|
|
|
|
{
|
2022-04-09 16:16:32 +08:00
|
|
|
|
DbType dbType;
|
|
|
|
|
|
var slavaConFig = new List<SlaveConnectionConfig>();
|
|
|
|
|
|
if (Appsettings.appBool("MutiDB_Enabled"))
|
|
|
|
|
|
{
|
|
|
|
|
|
var readCon = Appsettings.app<List<string>>("DbConn", "ReadUrl");
|
|
|
|
|
|
|
|
|
|
|
|
readCon.ForEach(s => {
|
|
|
|
|
|
slavaConFig.Add(new SlaveConnectionConfig() { ConnectionString = s });
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (Appsettings.app("DbSelect"))
|
|
|
|
|
|
{
|
|
|
|
|
|
case "Mysql": dbType = DbType.MySql; break;
|
|
|
|
|
|
case "Sqlite": dbType = DbType.Sqlite; break;
|
|
|
|
|
|
case "Sqlserver": dbType = DbType.SqlServer; break;
|
|
|
|
|
|
case "Oracle": dbType = DbType.Oracle; break;
|
|
|
|
|
|
default:throw new Exception("DbSelect配置写的TM是个什么东西?");
|
|
|
|
|
|
}
|
2022-04-06 22:22:45 +08:00
|
|
|
|
SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
|
|
|
|
|
|
{
|
2022-04-09 16:16:32 +08:00
|
|
|
|
DbType = dbType,
|
2022-04-06 22:22:45 +08:00
|
|
|
|
ConnectionString = Appsettings.app("DbConn", "WriteUrl"),
|
2022-04-09 16:16:32 +08:00
|
|
|
|
IsAutoCloseConnection = true,
|
|
|
|
|
|
MoreSettings = new ConnMoreSettings()
|
|
|
|
|
|
{
|
|
|
|
|
|
DisableNvarchar = true
|
|
|
|
|
|
},
|
|
|
|
|
|
SlaveConnectionConfigs = slavaConFig,
|
|
|
|
|
|
|
2022-04-06 22:22:45 +08:00
|
|
|
|
},
|
|
|
|
|
|
db =>
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
db.Aop.DataExecuting = (oldValue, entityInfo) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
//var httpcontext = ServiceLocator.Instance.GetService<IHttpContextAccessor>().HttpContext;
|
|
|
|
|
|
switch (entityInfo.OperationType)
|
|
|
|
|
|
{
|
|
|
|
|
|
case DataFilterType.InsertByObject:
|
|
|
|
|
|
if (entityInfo.PropertyName == "CreateUser")
|
|
|
|
|
|
{
|
|
|
|
|
|
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["Id"].ToString()));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (entityInfo.PropertyName == "TenantId")
|
|
|
|
|
|
{
|
|
|
|
|
|
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["TenantId"].ToString()));
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DataFilterType.UpdateByObject:
|
|
|
|
|
|
if (entityInfo.PropertyName == "ModifyTime")
|
|
|
|
|
|
{
|
|
|
|
|
|
entityInfo.SetValue(DateTime.Now);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (entityInfo.PropertyName == "ModifyUser")
|
|
|
|
|
|
{
|
|
|
|
|
|
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["Id"].ToString()));
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
db.Aop.OnLogExecuting = (s, p) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("_______________________________________________");
|
2022-04-09 00:54:13 +08:00
|
|
|
|
Console.WriteLine("执行SQL:"+s.ToString());
|
|
|
|
|
|
Console.WriteLine("_______________________________________________");
|
2022-04-06 22:22:45 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
services.AddSingleton<ISqlSugarClient>(sqlSugar);//这边是SqlSugarScope用AddSingleton
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|