今天来学习使用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

{

///

/// 数据交互帮助类

///

public class DBHelper

{

///

/// 数据库链接地址

///

private static string connStr = "Data Source=.;Initial Catalog=数据库名称;Persist Security Info=True;User ID=sa;pwd=密码;";

///

/// 创建数据库对象

///

///

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

{

///

/// 用户表实体

///

public class tb_User

{

///

/// ID

/// 数据是自增需要加上IsIdentity

/// 数据库是主键需要加上IsPrimaryKey

/// 注意:要完全和数据库一致2个属性

///

[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]

public int user_ID { get; set; }

///

/// 账号

///

public string user_Name { get; set; }

///

/// 密码

///

public string pwd { get; set; }

///

/// 昵称

///

public string user_nickName { get; set; }

///

/// 角色

///

public string roles { get; set; }

///

/// 头像

///

public string avatar { get; set; }

///

/// 个人介绍

///

public string introduction { get; set; }

}

///

/// 用户查询条件

///

public class UserWhere

{

///

/// 用户名

///

public string user_nickName { get; set; }

///

/// 用户id

///

public int user_ID { get; set; }

///

/// 页码

///

public int pageIndex { get; set; }

///

/// 页大小

///

public int pageSize { get; set; }

}

}

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

using Models;

using System;

using System.Collections.Generic;

using System.Text;

namespace DAL

{

///

/// 用户表数据交互层

///

public class t_UserDAL

{

///

/// 新增用户

///

///

///

public int inserUser(tb_User user)

{

try

{

//创建sqlSugar链接

var db = DBHelper.CreateSqlSugar();

//新增用户并返回插入行数

return db.Insertable(user).ExecuteCommand();

}

catch (Exception ex)

{

return 0;

}

}

///

/// 根据条件删除

///

///

///

public int delUser(int user_ID)

{

try

{

//创建sqlSugar链接

var db = DBHelper.CreateSqlSugar();

//执行删除,根据条件删除,返回被执行条数

return db.Deleteable().Where(user => user.user_ID == user_ID).ExecuteCommand();

}

catch (Exception ex)

{

return 0;

}

}

///

/// 更新用户

///

///

///

public int updateUser(tb_User user)

{

try

{

//创建sqlSugar链接

var db = DBHelper.CreateSqlSugar();

//执行更新,并返回条数

return db.Updateable(user).ExecuteCommand();

}

catch (Exception ex)

{

return 0;

}

}

///

/// 分页查询用户信息

///

///

///

///

public List getUserList(UserWhere para, ref int total)

{

try

{

//创建sqlSugar链接

var db = DBHelper.CreateSqlSugar();

//分页查询

var list = db.Queryable()

.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

{

///

/// 业务逻辑层

///

public class t_UserBLL

{

public t_UserDAL userDAL;

public t_UserBLL()

{

this.userDAL = new t_UserDAL();//实例化数据交互层

}

///

/// 新增用户

///

/// 用户信息

///

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 "新增用户失败!";

}

}

///

/// 删除用户

///

/// 用户id主键

///

public string delUser(int user_ID)

{

if (user_ID > 0)

{

if (userDAL.delUser(user_ID) > 0)

{

return "删除成功!";

}

else

{

return "删除失败!";

}

}

else

{

return "删除失败";

}

}

///

/// 更新用户信息

///

///

///

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 "更新用户失败!";

}

}

///

/// 分页查询用户信息

///

///

///

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

{

///

/// 返回用户类

///

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();

}

///

/// 新增

///

///

///

public IActionResult inserUser(tb_User user)

{

var msg = userBLL.inserUser(user);

ViewData["msg"] = msg;

return View();

}

}

}

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

最终呈现

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

最终的项目文件结构:

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

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。