SqlSugar简单使用记录(三)TodoList实战

839 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

系列文章链接
SqlSugar简单使用记录(一)
SqlSugar简单使用记录(二)

经过前面两篇文档,基本可以把SqlSugar用起来了
本篇就通过写一个小demo,把SqlSugar用起来看看

1、并非性能测试,这个很多人已经做过了,我也相信它的性能。我要做的就是亲自实践,那怕一个功能简陋的demo,但是实现过程中总能遇到各种问题,慢慢去解决它
2、.Net程序员一般都会选择使用Razor来写页面,本文将换一种方式来写,页面将使用类似于MVVM模式
3、下文将会用到SqlSugar、bootstrap4、jsview等技术

话不多说,开始TodoList吧

从零开始,首先新建一个asp net Core Web项目 image.png 创建成功后,项目目录中找到依赖项,鼠标放上去,点击右键,点开菜单,选择管理NuGet程序包 image.png
然后搜索安装即可 image.png 首先创建一个实体类TodoList

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SqlSugar;

namespace SugarDemo.Models
{
    public class TodoList
    {
        [SugarColumn(IsPrimaryKey = true)]
        public Guid Id { get; set; }
        
        [SugarColumn(ColumnDataType = "nvarchar(200)", ColumnDescription = "标题")]
        public string Title { get; set; }

        [SugarColumn(ColumnDataType = "nvarchar(500)", ColumnDescription = "内容")]
        public string Content { get; set; }

        [SugarColumn(ColumnDescription = "已完成")]
        public bool IsFinish { get; set; }

        [SugarColumn(ColumnDescription = "创建时间")]
        public DateTime CreateTime { get; set; }
    }
}

一步到位,ColumnDataType可防止中文乱码

建议实体类放到指定文件夹中,例如项目目录下创建Models文件夹,实体类全部放进去,方便管理,下同
然后直接到Startup.cs文件的 ConfigureServices方法中配置SqlSugar
几行代码就可以完成配置

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    //SqlSugar配置
    var db = new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = "你的sqlserver数据库连接字符串",
        DbType = DbType.SqlServer,
        IsAutoCloseConnection = true,
    });
    db.DbMaintenance.CreateDatabase();
    db.CodeFirst.InitTables(typeof(TodoList));
    services.AddSingleton<ISqlSugarClient>(db);
}

接下来,就需要写个控制器了,用于对实体类数据的增删改查
在项目目录下创建文件夹Controllers,鼠标放Controllers文件夹上,点击右键,选择添加,继续选择控制器 image.png 或者鼠标放在项目名称上,点击右键,添加,新建项(这样创建出来的控制器需要手动拖拽到Controllers文件夹中) image.png 然后选择创建一个空的api控制器 image.png 名称记得修改为:实体类名+Controller.cs --->TodoListController.cs
创建出来如下

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SugarDemo.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TodoListController : ControllerBase
    {
    }
}

将SqlSugar数据库实例对象通过控制器的构造器注入进来
再写一个查询方法
修改下通用路由格式,方便使用

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SqlSugar;
using SugarDemo.Models;

namespace SugarDemo.Controllers
{
    [ApiController]
    [Route("api/[controller]/[action]")]
    public class TodoList2Controller : ControllerBase
    {
        private readonly ISqlSugarClient db;

        public TodoList2Controller(ISqlSugarClient _db)
        {
            db = _db;
        }

        /// <summary>
        /// 查询
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public List<TodoList> GetList()
        {
            return db.Queryable<TodoList>().OrderBy(x=>x.CreateTime, OrderByType.Desc).ToList();
        }
    }
}

为了控制器能正常工作,需要在Startup.cs中再配置一个路由,否则无法调用控制器中方法
很简单,只需要在原来的UseEndpoints中添加一个MapControllerRoute即可

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();

    //控制器路由配置
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

到这里,F5运行项目,在当前url后面添加 /api/todolist/getlist 即可调用控制器的查询方法 image.png 出现如上图示,项目如预期正常跑起来了

如果有刚入门小伙伴,到这里报错了,无法解决,可以评论区联系我~

本文先说到这里,后面再开始完善

  • 页面的初始搭建(UI就使用bootstrap4了)
  • jsview的基本使用
  • ajax请求数据
  • 模板渲染数据
  • 增删改数据
  • 查询数据
  • 功能优化

不要觉得太基础,开卷有益,每一次的成长,都是一次历练,慢慢摸索,总有一天回过头来,已是参天大树!