kazelee
2 天以前 0ed390381862dea0c7fd0210d16017eb09f12da4
util/SqlHelper.cs
@@ -1,28 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using SqlSugar;
namespace HH.WCS.Mobox3.DSZSH.util {
    //https://www.donet5.com/Home/Doc
    //DOC:https://www.donet5.com/Home/Doc
    //NOTE:如果用Oracle数据库,需要包Oracle.ManagedDataAccess/21.15.0,环境netframework/4.6.2(太新了4.8,有的服务器安装不上去)
    //NOTE:SqlHelper带T的原因,是旧框架编写了`Update(T model, string[] cols)`等代码(参考HH-0014_NongFu_QingXi 农夫青溪)
    public class SqlHelper<T> where T : class, new() {
        // NOTE:如果用Oracle数据库,需要包Oracle.ManagedDataAccess/21.15.0,环境netframework 4.6.2 (太新了4.8有的服务器安装不上去)
        public SqlSugarClient GetInstance(string url = "") {
        public SqlSugarClient GetInstance() {
            //创建数据库对象
            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() {
                ConnectionString = string.IsNullOrEmpty(url) ? Settings.SqlServer : url,
                //ConnectionString = @"Data Source=192.168.1.198\sql2008;Initial Catalog=OIMobox;User ID=sa;Password=sa@2015",
                DbType = DbType.SqlServer,
                //ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OIMobox)));User Id=system;Password=Am123123;",
                //DbType = DbType.Oracle,
                ConnectionString = Settings.DbConn,
                DbType = Settings.DbType,
                IsAutoCloseConnection = true,
                InitKeyType = InitKeyType.Attribute//从特性读取主键自增信息
            });
            //监控所有超过1秒的Sql
            db.Aop.OnLogExecuted = (sql, p) => {
                //执行时间超过1秒
@@ -37,13 +31,11 @@
                }
                //相当于EF的 PrintToMiniProfiler
            };
            // 配置AOP日志
            //配置AOP日志
            //db.Aop.OnLogExecuting = (sql, pars) =>
            //{
            //    Console.WriteLine(sql); // 输出纯SQL语句
            //    Console.WriteLine(sql);//输出纯SQL语句
            //};
            //每次设置数值时都去除前导后导空格
            db.Aop.DataExecuted = (value, entity) => {
                entity.EntityColumnInfos.ToList().ForEach(a => {
@@ -53,13 +45,14 @@
                    }
                });
            };
            //据转换 (ExecuteCommand才会拦截,查询不行)
            //db.Aop.DataExecuting = (value, entity) => {
            //    //var val=entity.EntityColumnInfo
            //    Console.WriteLine(entity.EntityName);
            //设置AOP中的事件处理程序
            //db.Aop.OnExecutingChangeSql = (sql, p) => {
            //    // 示例:自动过滤软删除数据
            //    if (sql.StartsWith("SELECT")) {
            //        sql += " WHERE IsDeleted = 0";
            //    }
            //    return new KeyValuePair<string, SugarParameter[]>(sql, p);
            //};
            return db;
        }
    }