using SqlSugar; using SqlSugar.IOC; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using VideoAnalysisCore.Model; namespace VideoAnalysisCore.Common { public class Repository : SimpleClient where T : class, new() { readonly Dictionary CID = new Dictionary(); public Repository() { SwitchConnection(); } public void SwitchConnection() { var t = typeof(T); if (CID.ContainsKey(t)) { base.Context = CID[t] != null ? DbScoped.Sugar.GetConnectionScope(CID[t]) : DbScoped.Sugar; return; } else { var c = t.GetCustomAttribute(); if (!CID.ContainsKey(t)) CID.Add(t, c?.configId); base.Context = c != null ? DbScoped.Sugar.GetConnectionScope(c.configId) : DbScoped.Sugar; //这个变量也要保证是线程安全的,尽量CopyNew在方法中使用 base.Context = base.Context.CopyNew(); } } } }