SqlSugar对数据库进行交互,.Net Core2.1 、SqlServer

3 篇文章 0 订阅
1 篇文章 0 订阅

        今天来学习使用SqlSugar进行数据库交互。

        SqlSugar是一款.NET开源 ORM框架,由果糖大数据科技团队维护和更新,官方文档

学习目标:        

        1.使用三层架构

        2.使用SqlSugar对数据库进行增、删、查、改

实现:

        创建Web MVC项目,这里使用的是.Net Core2.1

目标一:使用三层架构

        三层为下面三层:

        表现层(UI)给用户交互的界面,如HTML页面。

        业务层(BLL)实现业务逻辑,比如登录验证逻辑、查询数据的规则。

        数据访问层(DAL)跟数据库的直接交互,目标二中的增、删、改、查就是在这层实现。

        除三层外还有一层为实体层(Models),一般用于放置实体类,对于上面的三层实体层是必不可少的,可以作为参数在这几层中传送数据。

        右键解决方案创建类库BLL、DAL、Model

 创建完成后的项目文件结构如下图:

创建完成后配置引用关系,各个层之间的引用关系如下:

表现层(UI)引用:业务逻辑层(BLL)、实体层(Models)

业务逻辑层(BLL)引用:数据交互层(DAL)、实体层(Models)

数据交互层(DAL)引用:实体层(Models)

实体层(Models)引用:无

 至此三层创建完成,接下来继续完成目标二。

目标二:使用SqlSugar对数据库进行增、删、查、改

         第一步:数据交互层(DAL)

使用NuGet包管理安装SqlSugar,因为直接跟数据库交互的为数据访问层(DAL),所以在DAL层进行安装。  搜索   SqlSugarCore   

注意:在DAL层安装;还有注意版本兼容,会导致安装失败。因为这里使用的是.NetCore2.1,无法使用最新版SqlSugar,这里我选择的是5.0.2版本,具体差异可以查看SqlSugar文档

 

 安装完成后再DAL层创建数据交互帮助类DBHelper,创建SqlSugar数据库对象。这样我们就可以再别处使用Sqlsugar进行数据库交互了,DBHelper类代码如下↓:

using Models;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Text;

namespace DAL
{
    /// <summary>
    /// 数据交互帮助类
    /// </summary>
    public class DBHelper
    {
        /// <summary>
        /// 数据库链接地址
        /// </summary>
        private static string connStr = "Data Source=.;Initial Catalog=数据库名称;Persist Security Info=True;User ID=sa;pwd=密码;";


        /// <summary>
        /// 创建数据库对象
        /// </summary>
        /// <returns></returns>
        public static SqlSugarClient CreateSqlSugar()
        {
            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = connStr,//数据库链接地址
                DbType = DbType.SqlServer,//数据库类型,本例使用的是SqlServer
                IsAutoCloseConnection = true,//自动释放和关闭数据库连接,如果有事务事务结束时关闭,否则每次操作后关闭	
            });
            return db;
        }

    }
}

        接下来就可以愉快的进行对数据库的增、删、查、改了。

首先先再实体层(Models)创建t_User表实体类:

 因为实体类主键的需要,在实体层(Models)也需要使用NuGet安装SqlSugar。

using SqlSugar;
using System;
using System.Collections.Generic;
using System.Text;

namespace Models
{
    /// <summary>
    /// 用户表实体
    /// </summary>
    public class tb_User
    {
        /// <summary> 
        ///  ID
        ///  数据是自增需要加上IsIdentity 
        ///  数据库是主键需要加上IsPrimaryKey 
        ///  注意:要完全和数据库一致2个属性
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int user_ID { get; set; }
        /// <summary>
        /// 账号
        /// </summary>
        public string user_Name { get; set; }
        /// <summary>
        /// 密码
        /// </summary>
        public string pwd { get; set; }
        /// <summary>
        /// 昵称
        /// </summary>
        public string user_nickName { get; set; }
        /// <summary>
        /// 角色
        /// </summary>
        public string roles { get; set; }
        /// <summary>
        /// 头像
        /// </summary>
        public string avatar { get; set; }
        /// <summary>
        /// 个人介绍
        /// </summary>
        public string introduction { get; set; }
    }

    /// <summary>
    /// 用户查询条件
    /// </summary>
    public class UserWhere
    {
        /// <summary>
        /// 用户名
        /// </summary>
        public string user_nickName { get; set; }
        /// <summary>
        /// 用户id
        /// </summary>
        public int user_ID { get; set; }
        /// <summary>
        /// 页码
        /// </summary>
        public int pageIndex { get; set; }
        /// <summary>
        /// 页大小
        /// </summary>
        public int pageSize { get; set; }
    }
}

实体构建完成后开始编写数据交互层以t_User表为例,创建t_UserDAL类,在此仅展示部分用法其他更多用法可参照SqlSugar文档。代码如下:

using Models;
using System;
using System.Collections.Generic;
using System.Text;

namespace DAL
{
    /// <summary>
    /// 用户表数据交互层
    /// </summary>
    public class t_UserDAL
    {

        /// <summary>
        /// 新增用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public int inserUser(tb_User user)
        {
            try
            {
                //创建sqlSugar链接
                var db = DBHelper.CreateSqlSugar();

                //新增用户并返回插入行数
                return db.Insertable(user).ExecuteCommand();

            }
            catch (Exception ex)
            {
                return 0;
            }
        }

        /// <summary>
        /// 根据条件删除
        /// </summary>
        /// <param name="user_ID"></param>
        /// <returns></returns>
        public int delUser(int user_ID)
        {
            try
            {
                //创建sqlSugar链接
                var db = DBHelper.CreateSqlSugar();

                //执行删除,根据条件删除,返回被执行条数
                return db.Deleteable<tb_User>().Where(user => user.user_ID == user_ID).ExecuteCommand();
            }
            catch (Exception ex)
            {
                return 0;
            }
        }

        /// <summary>
        /// 更新用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public int updateUser(tb_User user)
        {
            try
            {
                //创建sqlSugar链接
                var db = DBHelper.CreateSqlSugar();
                //执行更新,并返回条数
                return db.Updateable(user).ExecuteCommand();

            }
            catch (Exception ex)
            {
                return 0;
            }
        }

        /// <summary>
        /// 分页查询用户信息
        /// </summary>
        /// <param name="para"></param>
        /// <param name="total"></param>
        /// <returns></returns>
        public List<tb_User> getUserList(UserWhere para, ref int total)
        {
            try
            {
                //创建sqlSugar链接
                var db = DBHelper.CreateSqlSugar();

                //分页查询
                var list = db.Queryable<tb_User>()
                            .WhereIF(!string.IsNullOrEmpty(para.user_nickName), x => x.user_nickName.Contains(para.user_nickName))//如果用户名不为空就执行该查询条件
                            .WhereIF(para.user_ID > 0, x => x.user_ID == para.user_ID)//如果id大于零就自行该查询条件
                            .ToPageList(para.pageIndex, para.pageSize, ref total);
                return list;
            }
            catch (Exception ex)
            {
                return null;
            }
        }


    }
}

        第二步:业务逻辑层(BLL)

                        这层主要做数据的验证、返回信息的逻辑处理,在实际开发中可根据业务需要进行拓展。

using DAL;
using Models;
using System;
using System.Collections.Generic;
using System.Text;

namespace BLL
{
    /// <summary>
    /// 业务逻辑层
    /// </summary>
    public class t_UserBLL
    {
        public t_UserDAL userDAL;
        public t_UserBLL()
        {
            this.userDAL = new t_UserDAL();//实例化数据交互层
        }

        /// <summary>
        /// 新增用户
        /// </summary>
        /// <param name="user">用户信息</param>
        /// <returns></returns>
        public string inserUser(tb_User user)
        {
            if (string.IsNullOrEmpty(user.user_Name))
            {
                return "用户账号不能为空!";
            }
            if (string.IsNullOrEmpty(user.user_nickName))
            {
                return "用户昵称不能为空!";
            }
            if (string.IsNullOrEmpty(user.roles))
            {
                return "用户角色不能为空!";
            }
            if (string.IsNullOrEmpty(user.pwd))
            {
                return "用户密码不能为空!";
            }
            //放行
            var number = userDAL.inserUser(user);
            if (number > 0)
            {
                return "新增用户成功!数量" + number;
            }
            else
            {
                return "新增用户失败!";
            }
        }

        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="user_ID">用户id主键</param>
        /// <returns></returns>
        public string delUser(int user_ID)
        {
            if (user_ID > 0)
            {
                if (userDAL.delUser(user_ID) > 0)
                {
                    return "删除成功!";
                }
                else
                {
                    return "删除失败!";
                }
            }
            else
            {
                return "删除失败";
            }
        }
        /// <summary>
        /// 更新用户信息
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public string updateUser(tb_User user)
        {
            if (user.user_ID <= 0)
            {
                return "用户id不正确!";
            }
            if (string.IsNullOrEmpty(user.user_Name))
            {
                return "用户账号不能为空!";
            }
            if (string.IsNullOrEmpty(user.user_nickName))
            {
                return "用户昵称不能为空!";
            }
            if (string.IsNullOrEmpty(user.roles))
            {
                return "用户角色不能为空!";
            }
            if (string.IsNullOrEmpty(user.pwd))
            {
                return "用户密码不能为空!";
            }
            //放行
            var number = userDAL.updateUser(user);
            if (number > 0)
            {
                return "更新用户成功!";
            }
            else
            {
                return "更新用户失败!";
            }
        }

        /// <summary>
        /// 分页查询用户信息
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public ReturnData getUserList(UserWhere para)
        {
            var result = new ReturnData();
            try
            {
                int total = 0;
                var list = userDAL.getUserList(para, ref total);
                if (list.Count > 0)
                {
                    result.data = list;
                    result.msg = "查询成功!";
                    result.total = total;
                    return result;
                }
                else
                {
                    result.msg = "查询失败!";
                    return result;
                }
            }
            catch (Exception ex)
            {
                return result;
            }
        }
    }
}

分页查询返回参ReturnData如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace Models
{
    /// <summary>
    /// 返回用户类
    /// </summary>
    public class ReturnData
    {
        public int code { get; set; } = 2001;
        public object data { get; set; } = null;
        public string msg { get; set; } = "操作失败!";
        public int total { get; set; }
    }
}

        第三步:编写用户交互层(UI)

                用户交互层部分代码如下:

using BLL;
using DemoMVC0704.Models;
using Microsoft.AspNetCore.Mvc;
using Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;

namespace DemoMVC0704.Controllers
{
    public class HomeController : Controller
    {
        public t_UserBLL userBLL;
        public HomeController()
        {
            this.userBLL = new t_UserBLL();
        }

        public IActionResult Index()
        {
            var para = new UserWhere()
            {
                pageIndex = 1,
                pageSize = 5
            };
            var result = new ReturnData();
            result = userBLL.getUserList(para);
            ViewBag.userList = result.data;
            return View();
        }
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public IActionResult inserUser(tb_User user)
        {
            var msg = userBLL.inserUser(user);
            ViewData["msg"] = msg;
            return View();
        }
    }
}

至此增、删、查、改操作完成。

最终呈现

点击新增后查询到新增的数据表示已经成功新增,并且数据库中已经存在该条数据。

最终的项目文件结构:

今天的.Net Core 使用SQL sugar进行增、删、改、查学习结束,需要源码的可以进行下载

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值