怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  819 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

using System.Linq.Expressions;
using Microsoft.Extensions.Configuration;
using SqlSugar;

namespace SqlSugarFrameworkCore;

public class DbSettings
{
public const string AppOne = "AppOne";
public const string AppDevOne = "AppDevOne";
public const string AppThreeOne = "AppThreeOne";
public const string Oracle = "Oracle";
}

public enum DbInfo
{
MesOne = 1,
MesDevOne = 2,
MesThree = 3,
Oracle = 4,
}

public class LongSugarClient
{
public static LongSugarClient sugarInstance;
public static DbInfo curDbInfo;
public static Dictionary<DbInfo, LongSugarClient> sugarInstances = new Dictionary<DbInfo, LongSugarClient>();

public static readonly object sugarInstanceLock = new object();
public SqlSugarClient _db;
private LongSugarClient(SqlSugarClient sqlSugarClient)
{
_db = sqlSugarClient;
}
public static LongSugarClient GetInstance(DbInfo dbInfo, IConfigurationSection dbConfigurationSection)
{
if (sugarInstances.ContainsKey(dbInfo))
{
sugarInstances.TryGetValue(dbInfo, out LongSugarClient sugarInstance);
return sugarInstance;
}
lock (sugarInstanceLock)
{
if (sugarInstances.ContainsKey(dbInfo))
{
sugarInstances.TryGetValue(dbInfo, out LongSugarClient sugarInstance);
return sugarInstance;
}
GetSugarClient(dbInfo, dbConfigurationSection);
}
return sugarInstance;
}
private static void GetSugarClient(DbInfo dbInfo, IConfigurationSection dbConfigurationSection)
{
if (dbInfo == DbInfo.MesOne)
{
string connectStr = dbConfigurationSection.GetSection(DbSettings.AppOne).Value ?? throw new ArgumentNullException($"{DbSettings.AppOne} is misstion");
CreateSugarClient(dbInfo, connectStr);
}
else if (dbInfo == DbInfo.MesDevOne)
{
string connectStr = dbConfigurationSection.GetSection(DbSettings.AppDevOne).Value ?? throw new ArgumentNullException($"{DbSettings.AppDevOne} is misstion");
CreateSugarClient(dbInfo, connectStr);
}
else if (dbInfo == DbInfo.MesThree)
{
string connectStr = dbConfigurationSection.GetSection(DbSettings.AppThreeOne).Value ?? throw new ArgumentNullException($"{DbSettings.AppThreeOne} is misstion");
CreateSugarClient(dbInfo, connectStr);
}
else if (dbInfo == DbInfo.Oracle)
{
string connectStr = dbConfigurationSection.GetSection(DbSettings.Oracle).Value ?? throw new ArgumentNullException($"{DbSettings.Oracle} is misstion");
CreateSugarClient(dbInfo, connectStr);
}
}
private static void CreateSugarClient(DbInfo dbInfo, string connectStr)
{
SqlSugarClient sqlSugar = new SqlSugarClient(
new ConnectionConfig()
{
DbType = SqlSugar.DbType.SqlServer,
ConnectionString = connectStr,
IsAutoCloseConnection = true,
},
db =>
{
//单例参数配置,所有上下文生效
db.Aop.OnLogExecuting = (sql, pars) =>
{
//打印日志
Console.WriteLine(sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
};
}
);
sugarInstance = new LongSugarClient(sqlSugar);
sugarInstances.Add(dbInfo, sugarInstance);
}
private DbInfo? GetCurrentDbInfo()
{
foreach (KeyValuePair<DbInfo, LongSugarClient> pair in sugarInstances)
{
if (pair.Value == this)
{
return pair.Key;
}
}
return null;
}
public void Excute()
{
dynamic dynamic = this._db.SqlQueryable<dynamic>("select count(*) as count FROM [dbo].[MBO_EqInfo]").First();
System.Console.WriteLine(dynamic.ToSqlValue);
}

}

posted on   超级无敌美少男战士  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示