SqlSugar简单工模式数据访问简单Demo

本文介绍了一个基于SqlSugar的ORM框架实现案例,详细展示了接口定义、抽象层实现、具体实现类及工厂模式的应用,并提供了学生信息管理的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源代码地址:http://git.oschina.net/tiama3798/BootstrapBack_Demo/tree/SqlSugar/

1.Model层

2.抽象层实例:

基础接口

    /// <summary>
    /// 基础接口
    /// </summary>
    public interface IBaseAbstract<T> where T : class
    {
        #region 基础访问
        /// <summary>
        /// 获取表达式树
        /// </summary>
        /// <returns></returns>
        Queryable<T> GetQueryable();
        /// <summary>
        /// 获取对象
        /// </summary>
        /// <param name="ID">主键ID</param>
        /// <returns></returns>
        T GetModel(object ID);
        /// <summary>
        /// 添加对象
        /// </summary>
        /// <param name="model">对象</param>
        /// <returns></returns>
        object Add(T model);
        /// <summary>
        /// 修改对象
        /// </summary>
        /// <param name="model">对象</param>
        /// <returns></returns>
        bool Update(T model);
        /// <summary>
        /// 删除对象
        /// </summary>
        /// <param name="model">对象</param>
        /// <returns></returns>
        bool Delete(T model);
        /// <summary>
        /// 删除对象---主键删除的公共方法,只支持int类型
        /// </summary>
        /// <param name="ID">主键ID</param>
        /// <returns></returns>
        bool Delete(int ID);
        #endregion
    }
View Code
    /// <summary>
    /// 学生接口定义
    /// </summary>
    public interface IStudent : IBaseAbstract<student>
    {
        #region 获取分页
        /// <summary>
        /// 获取分页数据
        /// </summary>
        /// <param name="info">分页信息</param>
        /// <returns></returns>
        List<student> GetPage(PageInfo info,string search);

        #endregion

        #region 获取数量
        /// <summary>
        /// 获取总数
        /// </summary>
        /// <returns></returns>
        int GetCount();
        #endregion
    }
View Code

3.实现成

基础类:

    internal class BaseOperate<T> where T : class, new()
    {
        protected SqlSugarClient db = null;
        public BaseOperate()
        {
            db = SugarContext.GetInstance();
        }

        #region 基础访问
        /// <summary>
        /// 获取表达式树
        /// </summary>
        /// <returns></returns>
        public Queryable<T> GetQueryable()
        {
            return db.Queryable<T>();
        }
        /// <summary>
        /// 获取对象
        /// </summary>
        /// <param name="ID">主键ID</param>
        /// <returns></returns>
        public T GetModel(object ID)
        {
            return GetQueryable().InSingle<T>(ID);
        }
        /// <summary>
        /// 添加对象
        /// </summary>
        /// <param name="model">对象</param>
        /// <returns></returns>
        public object Add(T model)
        {
            try
            {
                return db.Insert<T>(model);
            }
            catch (Exception ex)
            {
                throw new Exception("添加对象失败,当前类型:"+(typeof(T).Name)+ex.Message,ex);
            }
        }
        /// <summary>
        /// 修改对象
        /// </summary>
        /// <param name="model">对象</param>
        /// <returns></returns>
        public bool Update(T model)
        {
            try
            {
                return db.Update<T>(model);
            }
            catch (Exception ex)
            {
                throw new Exception("修改对象失败,当前类型:" + (typeof(T).Name), ex);
            }
        }
        /// <summary>
        /// 删除对象
        /// </summary>
        /// <param name="model">对象</param>
        /// <returns></returns>
        public bool Delete(T model)
        {
            try
            {
                return db.Delete<T>(model);
            }
            catch (Exception ex)
            {
                throw new Exception("删除对象失败,当前类型:" + (typeof(T).Name), ex);
            }
        }
        /// <summary>
        /// 删除对象,默认只支持int类型
        /// </summary>
        /// <param name="ID">主键ID</param>
        /// <returns></returns>
        public bool Delete(int ID)
        {
            try
            {
                return db.Delete<T, int>(ID);
            }
            catch (Exception ex)
            {
                throw new Exception("删除对象失败,当前类型:" + (typeof(T).Name), ex);
            }
        }
        #endregion
    }
View Code

实现类:

    /// <summary>
    /// 学生数据访问操作
    /// </summary>
    internal class StudentOperate : BaseOperate<student>, IStudent
    {
        #region 获取分页
        /// <summary>
        /// 获取分页数据
        /// </summary>
        /// <param name="info">分页信息</param>
        /// <returns></returns>
        public List<student> GetPage(PageInfo info, string search)
        {
            //排序
            var query = GetQueryable();
            if (string.IsNullOrEmpty(search) == false)
            {
                query = query.Where(q => q.sno.Contains(search) || q.sname.Contains(search));
            }
            query = query.OrderBy(q => q.sbirthday);
            info.RecordCount = query.Count();
            //分页
            return query.ToPageList(info.PageIndex, info.PageSize);
        }
        #endregion

        #region 获取数量
        /// <summary>
        /// 获取总数
        /// </summary>
        /// <returns></returns>
        public int GetCount()
        {
            return GetQueryable().Count();
        }
        #endregion
    }
View Code

4.工厂类:

    /// <summary>
    /// 获取数据操作接口
    /// </summary>
    public class SugarFactory
    {
        public static IStudent GetStudent()
        {
            return new StudentOperate();
        }

    }
View Code

 

 

 

更多参考:

SqlSugar-事务操作

SqlSugar常用增删改操作

SqlSugar常用查询实例-拉姆达表达式

SqlSugar框架T4模板的使用

.Net开源SqlServer ORM框架SqlSugar整理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值