.Net Core+mySqlSugar的一些稍复杂操作
介绍一些我尝试的mysqlSugar的数据库操作
修改密码
var status = db.Update<Users>(new { password = user.password }, it => it.username == user.username);
更新数据(防止空值一起更新)
首先封装一个函数(判断是否为空或者数值为0),当然sqlsugar有自己的查询函数,判断值不为空且大于0 SqlFunc.HasNumber(
object
thisValue)
public void ForeachDisableColumns<T>(T model){Type t = model.GetType();PropertyInfo[] PropertyList = t.GetProperties();foreach (PropertyInfo item in PropertyList){string name = item.Name;object value = item.GetValue(model);if (value == null || value.ToString() == "0"){db.AddDisableUpdateColumns(name);//新语法添加禁止更新列 }}}
则结合以上函数,更新数据的用法
ForeachDisableColumns(user);db.Update<Users>(user, it => it.userid == user.userid);
批量更新,同样使用上述封装的方法
string strArr = "[{'name':'Kotonami','userid':'1'},{'name':'Akinama','userid':'17'},{'name':'Momozawa','userid':'6'}]";List<Users> newuser = JsonConvert.DeserializeObject<List<Users>>(strArr);//批量更新 数据量小时建议使用大于十条用SqlBulkReplaceforeach (var item in newuser){ForeachDisableColumns(item);}db.UpdateRange(newuser);db.DisableUpdateColumns = null;//清空禁止更新
返回行数
var list5 = db.SqlQuery<int>("select userid from Users limit 0,1").SingleOrDefault();
跨表查询,查询某班级学生的姓名和学号
//方法1outStr = db.SqlQueryJson("select name from Users,Class where class.stuid = Users.userid and class.classid = '" + newclass.classid + "'");//方法2outStr = db.Queryable<Class>().JoinTable<Users>((cl, us) => us.userid == cl.stuid)//两表共有的条件on......Where<Class>(cl => cl.classid == newclass.classid)//主表的条件where......Select("name,sex").ToJson();
三表查询 查询班级名称,该班级的学生姓名和用户id
outStr = db.Queryable<Class>().JoinTable<Users>((cl, us) => cl.stuid == us.userid).JoinTable<MyClass>((cl, mc) => cl.classid == mc.classid).Where(cl => cl.classid == newclass.classid).Select("name,sex,className").ToJson();
批量插入
string strList = "[{'classid':'2','stuid':'2'},{'classid':'2','stuid':'1'},{'classid':'2','stuid':'3'}]";List<Class> cl = JsonConvert.DeserializeObject<List<Class>>(strList);foreach (var item in cl){try{db.Insert(item);outStr = "插入成功!";}catch (Exception ex){outStr = ex.Message;}}
查看学习Math课程的学生的数量和名字
//方法1 但是稍显复杂outStr = db.Queryable<Class>().JoinTable<Users>((cls, us) => cls.stuid == us.userid, JoinType.Inner).JoinTable<MyClass>((cls, mc) => cls.classid == mc.classid && mc.classType == "Math", JoinType.Inner).Select("name").ToJson();//方法2 也不简单outStr = db.Sqlable().From("Class", "cl").Join("Users", "us", "cl.stuid", "us.userid", JoinType.Inner).Join("MyClass", "mc", "mc.classid", "cl.classid", JoinType.Inner).Where("mc.classType = 'Math'").SelectToJson("name");//方法3outStr = db.SqlQueryJson("SELECT name FROM users,class,myclass where users.userid = class.stuid and class.classid = myclass.classid and classType= 'Math'");
分页查询
//这里我创建了一个Page类来接收页面的Index和Size var pageIndex = pages.pageIndex;var pageSize = pages.pageSize;var totalCount = 0;var page = db.Queryable<Users>().OrderBy(it => it.userid).ToPageList(pageIndex, pageSize, ref totalCount);int totalpages = totalCount + 1 / pageSize;//保证最后一面即使不满足pagesize也占一面pages.totalPages = totalpages; //最后你可以处理成Json返回你要的数据
简单去重
outStr = db.Queryable<Users>().Select("username,password").GroupBy("username,password").ToJson();// 性能优于distinct
转载于:https://www.cnblogs.com/RikuBlog/p/9585916.html
.Net Core+mySqlSugar的一些稍复杂操作相关推荐
- mysql复杂操作,.Net Core+mySqlSugar的一些稍复杂操作
介绍一些我尝试的mysqlSugar的数据库操作 修改密码 var status = db.Update(new { password = user.password }, it => it.u ...
- ASP.NET Core微服务(六)——【redis操作】
ASP.NET Core微服务(六)--[redis操作]: Redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类key/value存储的不足, ...
- .NET Core WebApi中实现数据库的操作(之SqlServer)
一.实现效果 .NET Core WebApi基础入门项目源码下载 二.SqlSugar数据操作框架介绍 SqlSugar是一款老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新的国产操作 ...
- core分析-间接的指针误操作
core分析-间接的指针误操作 2013-11-26 17:22 528人阅读 评论(0) 收藏 举报 分类: c++(19) 版权声明:本文为博主原创文章,未经博主允许不得转载. 先来 ...
- mysql sqlsugar_.net core +mysqlSugar(最为简单的增删改查)
首先建立.net Core API - empty 这个就不说了 然后创建新的Controller 记得添加路由 [Route("api/Users")] 然后在Nuget Pac ...
- [小技巧]EF Core中如何获取上下文中操作过的实体
原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...
- Asp.net Core基于MVC框架实现PostgreSQL操作
简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...
- ASP.NET CORE WEB应用(有数据库操作的应用)发布到IIS
我当前运行环境: 电脑操作系统:win10专业版 编译器版本:VS2019 ASP.NET CORE 版本:ASP.NET CORE 5.0 数据库:SQL Server 2019 Express 默 ...
- EF Core学习笔记:反向工程 + 底层操作数据库原理
EF core三种建模模式:DB first / Model first / Code first 反向工程:根据数据库表来反向生成实体类 应用场景:通过旧的数据库生成新的项目 命令: Scaffol ...
最新文章
- “崩溃!我再也不搞 AI 了”谷歌 AI 专家:别让你的方法打败你!
- 【LeetCode】Recursion(共11题)
- 常见算法的python实现(Github标星75.5k+)
- String类及其构造器和常用方法
- Django(part24)--查询数据
- 重载运算符操作_学习
- LoadRunner常遇见的问题
- logstash的output插件
- 未能找到服务器的主机名,未能找到服务器的主机名
- 计算机程序的思维逻辑 (91) - Lambda表达式
- 关于360笔试部分题目小结
- 数据库优化实践【信息跟踪篇】
- 线程、同步异步、队列
- linux蓝牙安装程序,Linux 端蓝牙调试工具
- python画图——雪花(科赫曲线)
- 微信小程序 获取formId
- Java实现基于朴素贝叶斯的情感词分析
- python实验楼工资计算器_挑战:工资计算器读写数据文件
- Flutter 布局 - UI - 官方文档 - 学习速记(一)
- 中控WinSwitch3 WinSwitch可视化软件 灯光控制管理系统
热门文章
- 【MATLAB】 csvwrite数据缺失怎么办
- 中石油《计算机应用基础》,2017中国石油大学《计算机应用基础》第3阶段在线作业.doc...
- java类的定义的实例_Java中类的定义和初始化示例详解
- Java ArrayList与LinkedList数据结构和特点
- w ndows7文档加密取消,win7文件夹怎么加密?windows7文件加密方法
- android fragment addtobackstack,Android Fragment Back Stack的问题
- swagger-ui.html 404,解决访问swagger2报404问题
- Eclipse 答疑:代码版权?如何更改 Eclipse 中注释块的 @author 版权信息?
- 十、Python第十课——字典的些许知识(重点)
- CSS中div覆盖另一个div