.Net Core中使用SqlSugar进行数据查询

本文介绍的是SqlSugar这个ORM的查询操作,因为我接触SqlSugar也还没多久,所以理解的仅仅是入门级的,供各位参考!

DbContext定义:

using System;
using SqlSugar;
using Demo.Models;
namespace Demo.DbBase
{
    public class DbContext 
    {
        public SqlSugarClient Db;
        public DbContext()
        {
            Db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "Data Source=" + AppContext.BaseDirectory + "App_Data\\db.db",  //定义数据库路径,可以写入配置文件再读取,偷懒直接这样写。
                DbType = DbType.MySql, //指定数据库类型
               
                InitKeyType = InitKeyType.SystemTable, //默认值,直接从数据库初始化表数据,也可设置为  InitKeyType.Attribute ,需要再Model中指定主键及表名(如果表名跟类名不一致)
                IsAutoCloseConnection = true //是否自动关闭连接
            }) ;
            Db.Aop.OnLogExecuted = (sql, pars) =>
            {
                //这里可以写log方法,比如把sql和pars存入数据库或者log文件
            };
        }
        public SimpleClient<UserModel> UserDb{ get { return new SimpleClient<UserModel>(Db); } } 
        
    }
}

UserData.cs定义

using System;
using System.Collections.Generic;
using System.Text;
using Demo.Models;
using SqlSugar;
namespace Demo.DbBase
{
    public class UserData:DbContext  //继承DbContext
    {
        //SqlSugar简单查询
        public UserModel SelectById(int id)
        {
            return UserDb.GetById(id);  //直接根据id返回值
        }

        //SqlSugar简单查询lamda语法
        public UserModel SelectById(int id)
        {
            return MenuDb.GetSingle(it=>it.Id==id);  
        }

        //SqlSugar简单查询lamda语法多条件
        public UserModel SelectById(int id)
        {
            return UserDb.GetSingle(it=>it.Id==id && it.Age>18);  
        }
    
       //SqlSugar复杂查询之多条件及分页查询
       public IList<UserModel> Select(int groupId,int age,int curPage=1,int pageSize=20)
       {
          Expressionable<UserModel> expression = Expressionable.Create<UserModel>();
          expression = expression.And(it=>it.Group==groupId);
          expression = expression.Or(it=>it.Age==age);  //目前还没弄清楚这些And 和 Or怎么弄的,之后再试验。
          var exp = expression.ToExpression(); //不能直接用expression,要进行生成
          PageModel pager = new PageModel();  //实例化新的分页实例
          pager.PageSize = pageSize;
          pager.PageIndex = curPage;
          return UserDb.GetPageList(exp,pager); 
       }
       //SqlSugar复杂查询之多条件
       public IList<UserModel> Select(int groupId,int age)
       {
          Expressionable<UserModel> expression = Expressionable.Create<UserModel>();
          expression = expression.And(it=>it.Group==groupId);
          expression = expression.Or(it=>it.Age==age);  //目前还没弄清楚这些And 和 Or怎么弄的,之后再试验。
          var exp = expression.ToExpression(); //不能直接用expression,要进行生成
          return UserDb.GetList(exp); 
       }
        
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注