/// <summary> /// 數據倉儲工廠 /// </summary> /// <typeparam name="T"></typeparam> public class DbContext<T> where T : class, new() { /// <summary> /// 注意:不能寫成靜態的 //用來處理事務多表查詢和復雜的操作 /// </summary> public SqlSugarClient Db; /// <summary> /// 入口 /// </summary> public DbContext() { Db = new SqlSugarClient(new ConnectionConfig { ConnectionString = xx.ConnStr, DbType = DbType.SqlServer, InitKeyType = InitKeyType.Attribute, //從特性讀取主鍵和自增列信息 IsAutoCloseConnection = true //開啟自動釋放模式和EF原理一樣我就不多解釋了 }); //調式代碼 用來打印SQL Db.Aop.OnLogExecuting = (sql, pars) => { //Console.WriteLine(sql + "\r\n" +Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value))); // LogHelper.LogWrite(sql + "\r\n" +Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value))); }; } /// <summary> /// 用來處理T表的常用操作 /// </summary> public SimpleClient<T> CurrentDb => new SimpleClient<T>(Db); /// <summary> /// 獲取所有 /// </summary> /// <returns></returns> public virtual List<T> GetList() { return CurrentDb.GetList(); } /// <summary> /// 添加 /// </summary> /// <param name="obj"></param> /// <returns></returns> public virtual bool Add(T obj) { return CurrentDb.Insert(obj); } /// <summary> /// 根據主鍵刪除 /// </summary> /// <param name="id"></param> /// <returns></returns> public virtual bool Delete(dynamic id) { return CurrentDb.Delete(id); } /// <summary> /// 更新 /// </summary> /// <param name="obj"></param> /// <returns></returns> public virtual bool Update(T obj) { return CurrentDb.Update(obj); } }