SqlSugar小结

一、导语

1.SqlSugar是什么?

SqlSugar是一款轻量级ORM框架,专门用于.Net平台,提高开发效率,简化数据库操作。

2.为什么要使用SqlSugar?

①高性能:在大数据量的插入和查询操作中,SqlSugar的性能明显高于其他ORM框架。

②高扩展性:支持自定义Lamada函数解析、扩展数据类型、支持自定义实体特性、外部缓存等。

③数据库支持:支持多种数据库,包括关系型数据库、时序数据库、列式存储库等。

3.怎么使用SqlSugar?

Nuget包管理下载:工具——Nuget包管理器——管理解决方案的Nuget程序包

二、查询

1.单表查询

var GetAll = db.Queryable<实体>().ToList();//查询所有数据

var GetId = db.Queryable<实体>().First(a=>a.Name = 实体.Name);//根据Id查询单条数据

var GetPrimaryKey = db.Queryable<实体>().Insingle(2);//根据主键查询数据

var sum = db.Queryable<实体>().Sum(a=>a.Id);//查询Id总和

var IsAny = db.Queryable<实体>().where(a=>a.Id).Any();//查询是否存在

var GetRenameList = db.Queryable<实体>().As("表别名").ToList();//等同于select * from 表别名

var list = db.Queryable<实体>().where(i=>i.Name.Contains(实体.Name)).ToList();//模糊查询

var ListWhereIf = db.Queryable<实体>()
.whereIF(!string.IsNullOrWhiteSpace(实体.Name),i=>i.Name.Contains(实体.Name));


RefAsync<int> total = 0;
db.Queryable<实体>().ToPageListAsync(pageIndex,pagesize,total);//异步分页查询


var query1 = db.Queryable<实体>()
            .Select(i=>new model{
            Name = i.Name
            });
var query2 = db.Queryable<实体>()
            .Select(i=>new model{
            Name = i.Name
            });
var list = db.UnionAll(query1,query2).ToList();//并集查询

//1.Where和WhereIF的区别:
//WhereIF就是满足特定条件的时候才会执行查询条件

//2.IsNullOrWhiteSpace和IsNullOrEmpty的区别:
//IsNullOrWhiteSpace通常检查string字符串是否为null或者是否仅包含空白字符(空格、换行符等等)。
//IsNullOrEmpty通常检查string字符串是否为null或者为空的时候。

//3.Insingle适用于匹配一组值的语句查询

2.联表查询 

var query = db.Queryable<实体>()
            .LeftJoin<实体>((a,b)=>a.P_Id == b.P_Id)
            .LeftJoin<实体>((a,b,c)=>a.P_proCode == c.P_proCode)
            .Select((a,b,c)=>new 实体
            {

              P_Name = a.P_Name,
              P_Price = a.P_Price,
              P_InteName = b.P_InteName,
              P_Goods = c.P_Goods  
            });//联表查询

三、增加

//1.根据实体插入数据
db.Insertable(value).ExecuteCommand();//同步方式
await db.Insertable(value).ExecuteCommandAsnyc();//异步方式

//2.根据字典插入
var value = new Dictionary<string,object>();
                dt.Add("name","value1");
                dt.Add("sex","value2");
db.Insertable(value).ExecuteCommandAsnyc();

//3.不插入某列
db.Insertable(value).IgnoreColumns(i=>new
{
    i.Name,i.Sex
}).ExecuteReturnIdentity();


//4.只添加某一列字段数据
db.Insertable(value).InsertColumns(i=>new
{
    i.Name,
    i.Sex
}).ExecuteReturnIdentity();
//ExecuteReturnIdentity-返回自增列
//IgnoreColumns-忽略某一列

//5.忽略为空的字段
db.Insertable(value).IngnoreColunms(ignoreNullColumn:true).ExecuteCommandAsnyc();

//6.大数据插入
db.Insertable(value).UseSqlServer().ExecuteBlueCopy();

四、修改

//1.根据主键更新单条数据
var result = db.Updateable<实体>()
               .ExecuteCommand();

//2.忽略某些字段的更新数据
var result = db.Updateable(value)
               .IgnoreColumns(i=>new
{
    i.Name,
    i.UserId
}).ExecuteCommand();

//3.只更新某些字段的值
var result = db.Updateable(value)
               .UpdateColumns(i=>new
{
    i.Name,
    i.Sex
}).ExecuteCommand();

//4.只更新不为null的字段的值
db.Updateable(value)
   .IgnoreColumns(ignoreAllNullColumns:true).ExecuteCommand();

//5.根据表达式更新
await db.Updateable<实体>()
   .SetColumns(u=>u.F_Name == 实体.F_Name)
   .SetColumns(u=>u.F_Date == 实体.F_Date)
   .SetColumnsIF(实体.F_Status==1,u=>u.F_CloseDate == DateTime.Now)//如果状态为1的时候,设置关闭时间为当前时间
    .Where(u=>u.F_Id == 实体.F_Id)
    .ExecuteCommandAsync();

五、删除

//1.根据实体删除数据
db.Deleteable<实体>()
  .Where(new Student()
    {
        Id = 实体.Id
    }).ExecuteCommand();

//2.根据表达式删除数据
db.Deleteable<实体>()
  .Where(i=>i.Id == 实体.Id)
  .ExecuteCommand();

//3.子查询删除
db.Deleteable<实体>()
  .Where(p=>p.Id == SqlFunc.Subqueryable<实体>()
  .Where(s=>s.Id == p.Id).Select(s=>s.Id))
  .ExecuteCommand();

//4.除最新几条删除
int Num = 10;
var Records = db.OrderMaps
                .Take(Num)
                .Select(i=>i.Id)
                .ToList();//获取最新的几条的记录
db.OrderMaps.Where(i=>!Records.Contains(i.Id)).Delete();//删除最新的几条之外的数据记录

 六、原生Sql操作

//1.调用存储过程
db.Ado.UseStoredProcedure().存储过程
var res = db.Ado.UseStoredProcedure()
                .GetDataTable("sp_Class",new{name="学前1班",type="大班"});

//2.调用Sql
var dt = db.Ado.GetDataTable("select * from 表名 where id=@id and name=@name",
new{id=1,name=2});

var dt = db.Ado.GetDataTable("select * from 表名 where id=@id and name=@name",new List<SugarParameter>(){
    new SugarParameter("@id",1),
    new SugarParameter("@name",2)
});

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值