.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);
}
}
}
写的太模糊了
这是简单的说明,需要详细的建议查看官方的文档。