Files
Yi.Admin/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/SqlsugarExtension.cs

91 lines
3.5 KiB
C#
Raw Normal View History

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-11 23:12:12 +08:00
//准备添加分表分库
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
}
}
}