SqlSugar框架 DB类 ConnectionString:连接字符串从底层配置文件获取

这个类库展示了如何使用SqlSugar客户端与MySQL数据库进行交互,包括实例化、连接配置、增删改查等基本操作,确保类名和字段与数据库表一致。

 

需导入Sqlsugar命名空间进行使用,与数据库进行交互保证类名和字段的一致性

public class DBContext<T> where T : class, new()
    {
        /// <summary>
        /// 数据库实例
        /// </summary>
        private SqlSugarClient db;
        private static DBContext<T> instance = null;
        private static string ConnectionKey;

        public static DBContext<T> GetInstance()
        {
            if (instance == null)
                instance = new DBContext<T>();
            return instance;
        }

        //数据库连接字符串

        public static DBContext<T> OpenDB()
        {
            DBContext<T> dBContext = new DBContext<T>();
            dBContext.db = new SqlSugarClient(
                 new ConnectionConfig()
                 {
                     ConnectionString = ConfigHelper.GetValueByKey("ConnectionString"),
                     DbType = SqlSugar.DbType.MySql, //设置数据库类型
                     IsAutoCloseConnection = true, //自动释放数据务,如果存在事务,在事务结束后释放
                     InitKeyType = InitKeyType.Attribute, //从实体特性中读取主键自增列信息
                 });
            return dBContext;
        }

        public DBContext()
        {
            db = new SqlSugarClient(
                 new ConnectionConfig()
                 {
                     ConnectionString = ConfigHelper.GetValueByKey("ConnectionString"),
                     DbType = SqlSugar.DbType.MySql, //设置数据库类型
                     IsAutoCloseConnection = true, //自动释放数据务,如果存在事务,在事务结束后释放
                     InitKeyType = InitKeyType.Attribute, //从实体特性中读取主键自增列信息
                 });
        }

        public void Dispose()
        {
            if (db != null)
            {
                db.Dispose();
            }
        }

        public SimpleClient<T> CurrentDb => new SimpleClient<T>(db);


        /// <summary>
        /// 根据sql脚本查询
        /// </summary>
        /// <returns></returns>
        public virtual DataTable GetBySql(string sqlStr)
        {
            return db.Ado.GetDataTable(sqlStr);
        }

        /// <summary>
        /// 获取所有
        /// </summary>
        /// <returns></returns>
        public virtual List<T> GetList()
        {
            return CurrentDb.GetList();
        }

        /// <summary>
        /// 根据表达式查询
        /// </summary>
        /// <returns></returns>
        public virtual List<T> GetList(Expression<Func<T, bool>> whereExpression)
        {
            return CurrentDb.GetList(whereExpression);
        }


        /// <summary>
        /// 根据表达式查询分页
        /// </summary>
        /// <returns></returns>
        public virtual List<T> GetPageList(Expression<Func<T, bool>> whereExpression, PageModel pageModel)
        {
            return CurrentDb.GetPageList(whereExpression, pageModel);
        }

        /// <summary>
        /// 根据表达式查询分页并排序
        /// </summary>
        /// <param name="whereExpression">it</param>
        /// <param name="pageModel"></param>
        /// <param name="orderByExpression">it=>it.id或者it=>new{it.id,it.name}</param>
        /// <param name="orderByType">OrderByType.Desc</param>
        /// <returns></returns>
        public virtual List<T> GetPageList(Expression<Func<T, bool>> whereExpression, PageModel pageModel, Expression<Func<T, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc)
        {
            return CurrentDb.GetPageList(whereExpression, pageModel, orderByExpression, orderByType);
        }


        /// <summary>
        /// 根据主键查询
        /// </summary>
        /// <returns></returns>
        public virtual T GetById(dynamic id)
        {
            return CurrentDb.GetById(id);
        }

        /// <summary>
        /// 根据主键查询
        /// </summary>
        /// <returns></returns>
        public virtual T GetModel(Expression<Func<T, bool>> whereExpression)
        {
            var list = CurrentDb.GetList(whereExpression);
            if (list != null && list.Count > 0)
                return list[0];
            else
                return null;
        }

        /// <summary>
        /// 根据主键删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Delete(dynamic id)
        {
            if (string.IsNullOrEmpty(Convert.ToString(id)))
            {
                Console.WriteLine(string.Format("要删除的主键id不能为空值!"));
            }
            return CurrentDb.DeleteById(id);
        }


        /// <summary>
        /// 根据实体删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Delete(T data)
        {
            if (data == null)
            {
                Console.WriteLine(string.Format("要删除的实体对象不能为空值!"));
            }
            return CurrentDb.Delete(data);
        }

        /// <summary>
        /// 根据主键删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Delete(dynamic[] ids)
        {
            if (ids.Count() <= 0)
            {
                Console.WriteLine(string.Format("要删除的主键ids不能为空值!"));
            }
            return CurrentDb.AsDeleteable().In(ids).ExecuteCommand() > 0;
        }

        /// <summary>
        /// 根据表达式删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Delete(Expression<Func<T, bool>> whereExpression)
        {
            return CurrentDb.Delete(whereExpression);
        }


        /// <summary>
        /// 根据实体更新,实体需要有主键
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Update(T obj)
        {
            if (obj == null)
            {
                Console.WriteLine(string.Format("要更新的实体不能为空,必须带上主键!"));
            }
            return CurrentDb.Update(obj);
        }

        /// <summary>
        ///批量更新
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Update(List<T> objs)
        {
            if (objs.Count <= 0)
            {
                Console.WriteLine(string.Format("要批量更新的实体不能为空,必须带上主键!"));
            }
            return CurrentDb.UpdateRange(objs);
        }

        /// <summary>
        /// 插入
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Insert(T obj)
        {
            return CurrentDb.Insert(obj);
        }


        /// <summary>
        /// 批量
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual bool Insert(List<T> objs)
        {
            return CurrentDb.InsertRange(objs);
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写啊靠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值