首页 > 数据库 >sqlsugar 使用汇总 (大数据写入、更新,大数据更新 ORM, db.Fastest文档)

sqlsugar 使用汇总 (大数据写入、更新,大数据更新 ORM, db.Fastest文档)

时间:2023-07-05 13:34:10浏览次数:72  
标签:Name WhereIF db su ORM 更新 new Id

 

https://www.donet5.com/Home/Doc?typeId=2404  大数据写入、更新,大数据更新 ORM, db.Fastest文档

//插入 100万 10秒不到 

db.Fastest<RealmAuctionDatum>().BulkCopy(GetList());//性能 比现有任何Bulkcopy都要快30%


//如果数据库现有数据比较多出现比较慢,这个时候可以试试分页

db.Fastest<Order>().PageSize(300000).BulkCopy(insertObjs);

await db.Fastest<RealmAuctionDatum>().BulkCopyAsync(GetList()) //用异步await不能少,1000以上的数据;

更新:

db.Fastest<tb_users>().BulkUpdate(list);

await db.Fastest<RealmAuctionDatum>().BulkUpdateAsync(GetList())

更新:

public static int UpdateRoleById(Sys_Role model)
        {
            return DB.Updateable(model).UpdateColumns(it => new
            {
                it.Name,
                it.Remark,
                it.OperatorId,
                it.OperateTime
            }).ExecuteCommand();  //跟新指定列
            // return DB.Updateable(model).IgnoreColumns(it => new{it.CreateTime,it.CreatorId}).ExecuteCommand();//更新忽略指定的列
            //return DB.Updateable(model).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();//更新忽略所有为Null的列
        }

 

根据条件判段是否执行过滤,我们可以用WhereIf来实现,true执行过滤,false则不执行

var list = db.Queryable<Student>()


    .WhereIF(!string.IsNullOrEmpty(a),it => it.Name == a)


    .WhereIF(!string.IsNullOrEmpty(b), it => it.Name == b).ToList();

 

//result.RowList = DB.Queryable<Sys_Log,Sys_User>((it, su) => new object[] { JoinType.Left, it.CreatorId == su.Id })
            //                   .Select((it,su) => new Sys_Log { Id=it.Id,Name=it.Name, Operation=it.Operation,Status=it.Status,LoginIp=it.LoginIp,CreateTime=it.CreateTime, CreatorName =su.UserName})
            //                   .WhereIF(!string.IsNullOrEmpty(login), Creator == login)
            //                   .WhereIF(operation != 0, it => it.Operation == operation)
            //                   .WhereIF(logstatus != 0, it => it.Status == logstatus)
            //                   .WhereIF(date1.Year !=1,it => it.CreateTime >= date1)
            //                   .WhereIF(date2.Year !=1, it => it.CreateTime <= date2)
            //                   .ToPageList(pageNum, pageSize, ref totalNumber);
            result.RowList = DB.Queryable<Sys_Log>()
                    .WhereIF(!string.IsNullOrEmpty(login),it =>it.Creator == login)
                    .WhereIF(operation != 0, it => it.Operation == operation)
                    .WhereIF(logstatus != 0, it => it.Status == logstatus)
                    .WhereIF(date1.Year != 1, it => it.CreateTime >= date1)
                    .WhereIF(date2.Year != 1, it => it.CreateTime <= date2)
                    .WithCache()
                    .ToPageList(pageNum, pageSize, ref totalNumber);

--Mapper

DB.Queryable<Merchant_Model, Sys_User>((su, sr) => new object[] { JoinType.Left, su.AgentId == sr.Id })
                .WhereIF(!string.IsNullOrEmpty(query), su => su.Name.Contains(query))
                .Mapper((su) => su.AgentName = su.AgentId == 0 ? "无上级代理" : su.AgentName)
                .OrderBy(su => su.Id, OrderByType.Desc)
                .WithCache()
                .ToPageList(pageN

um, pageSize, ref totalNumber);

 

 

使用缓存查询

var list=db.Queryable<Student, School>((s1, s2) => s1.Id == s2.Id).Select(s1 => s1).WithCache().ToList();//可以设置过期时间WithCache(60)

删除缓存

我们需要删除缓存也相当方便,只需要在对该表操作的时候加 RemoveDataCache 就能把查询中引用该表的缓存全部清除

db.Deleteable<Student>().Where(it => it.Id == 1).RemoveDataCache().ExecuteCommand();

el-table 

<el-table-column label="用户类型" prop="userType">
					<template scope="scope">
						<el-tag type="success" v-if="scope.row.userType == 1">管理员</el-tag>
						<el-tag type="info" v-if="scope.row.userType == 2">普通用户</el-tag>
					</template>
				</el-table-column>

 

in list 

DB.Queryable<Sys_User>().In(it => it.UserType, new int[] { 3, 4, 5 }).WithCache().ToList()

//返回值为List<string>

List<string> data = db.Queryable<Student>().Select(f => f.Name).ToList();

 

只更新一个列,主键要有值

var t3 = db.Updateable(updateObj).UpdateColumns(it => new { it.Name }).ExecuteCommand();

忽略更新的列

var t4 = db.Updateable(updateObj)


.IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteCommand();

动态建表:每月建一个表

var list = DB.Queryable<ReportStatistics_Model>().AS("sys_order_"+ DateTime.Now.ToString("YYYYMM")).Where(it => it.IspId == ispId).ToList();

 

---事务开始

try
            {
                //事务开始
                this.A1.Db.Ado.BeginTran();                //插入
                this.A1.Db.Saveable<AAA>(lstNewDetail).ExecuteCommand();
                this.A1.Db.Saveable<AAA>(report).ExecuteCommand();                //提交事务
                this.A1.Db.Ado.CommitTran();                return new BaseRes<string>(true, VEJson.Msg.Gen.Success, report.PdfPath);
            }
            catch (Exception ex)
            {
                this.A1.Db.Ado.RollbackTran();
                throw ex;
            }



标签:Name,WhereIF,db,su,ORM,更新,new,Id
From: https://blog.51cto.com/u_15310950/6631193

相关文章

  • Spring Loaded代码热更新实践和原理分析
    1、引言开发者在编码效率和快速迭代中的痛点场景包括:修改代码后,需要频繁重启应用,导致开发效率低下;实时调试时,不能立即看到代码修改的结果;大型项目中,重启的时间成本较高。针对这些问题,本文将深入探讨如何利用SpringLoaded热更新技术提高开发效率,减少编译和重启时间。......
  • 华为云GaussDB圈层活动走进香港,以技术创新构筑金融政企数智发展基石
    摘要:近日,华为云GaussDB圈层活动在中国·香港如期举办,活动聚集了22家香港金融政企客户和合作伙伴。本文分享自华为云社区《华为云GaussDB圈层活动走进香港,赋能金融政企数字化转型》,作者:GaussDB数据库。近日,华为云GaussDB圈层活动在中国·香港如期举办,活动聚集了22家香港金融政企......
  • 阿里云 MongoDB 创建库添加用户并授权
    先通过root进到admin库,右击test选择用户管理测试连接......
  • .net Core Winform 增加NLog
    nlog.config<?xmlversion="1.0"encoding="utf-8"?><nlogxmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><targetsasync=&quo......
  • 从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生
    摘要:随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择。本文分享自华为云社区《从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生》,作者:华为云头条。数据驱动着现代商业的发展今天,无论在制造、零售、物流还是在互联网、金融等行业......
  • Mybatis-Plus中update()和updateById()将字段更新为null
    目录简介问题描述原因概述源码分析所有策略设置为null的方案方案1:使用UpdateWrapper更新方案2:设置全局的field-strategy(不推荐)方案3:设置某个字段的field-strategy参考文章简介说明本文介绍Mybatis-Plus无法将字段更新为null的原因及解决方法。问题描述用Mybatis-......
  • 前端学习 C 语言 —— GDB调试器
    GDB调试器我们在讲指针时用GDB调试段错误。本篇将详细介绍gdb的最常用命令、日志记录、检测点,最后介绍如何用gdb调试进程以及用gdb调试一个开源项目的调试版本——glmark2。gdb介绍GDB,theGNUProjectdebugger——gdb官网gdb是一款调试器,能打断点。支持多种语......
  • ElasticSearch - 批量更新bulk死锁问题排查
    一、问题系统介绍监听商品变更MQ消息,查询商品最新的信息,调用BulkProcessor批量更新ES集群中的商品字段信息;由于商品数据非常多,所以将商品数据存储到ES集群上,整个ES集群共划分了256个分片,并根据商品的三级类目ID进行分片路由。比如一个SKU的商品名称发生变化,我们就会收到......
  • 编译安装openGauss并用GDB进行调试
    编译安装openGauss并用GDB进行调试惜月夜于2021-06-2818:15:07发布1810收藏2分类专栏:openGauss文章标签:数据库版权openGauss专栏收录该内容1篇文章0订阅订阅专栏编译安装openGauss并用GDB进行调试关于编译opengauss,然后怎么去调试它,不知道花了多长时间.本来想着用......
  • influxdb 中得 fields 与 tag 区别总结
    本位为博主原创,转载请注明出处:1.Field与Tag说明在InfluxDB表结构中,field和tag是用于存储数据的两种不同类型。Field(字段):Field用于存储实际的数值数据,例如温度、湿度等测量值。Field是可变的,可以随时间的推移而改变其值。Field的值可以进行聚合计算,例如......