.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() == "")
{
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);
//批量更新 数据量小时建议使用大于十条用SqlBulkReplace
foreach (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();
跨表查询,查询某班级学生的姓名和学号
//方法1
outStr = db.SqlQueryJson("select name from Users,Class where class.stuid = Users.userid and class.classid = '" + newclass.classid + "'");
//方法2
outStr = 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"); //方法3
outStr = 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 = ; var page = db.Queryable<Users>()
.OrderBy(it => it.userid)
.ToPageList(pageIndex, pageSize, ref totalCount); int totalpages = totalCount + / pageSize;//保证最后一面即使不满足pagesize也占一面
pages.totalPages = totalpages;
//最后你可以处理成Json返回你要的数据
简单去重
outStr = db.Queryable<Users>()
.Select("username,password").GroupBy("username,password").ToJson();
// 性能优于distinct
.Net Core+mySqlSugar的一些稍复杂操作的更多相关文章
- .net core下对于Excel的一些操作及使用
原文:.net core下对于Excel的一些操作及使用 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...
- .net core +mysqlSugar(最为简单的增删改查)
首先建立.net Core API - empty 这个就不说了 然后创建新的Controller 记得添加路由 [Route("api/Users")] 然后在Nuget Pac ...
- asp.net core 1.1 升级后,操作mysql出错的解决办法。
遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到MissingMethodException问题,更新.插入操作没有问题. 如果你也遇到这个问题,请参照以下步骤进行升 ...
- Asp.net Core基于MVC框架实现PostgreSQL操作
简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...
- [小技巧]EF Core中如何获取上下文中操作过的实体
原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...
- EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery
一.目前EF Core的版本为V2.1 相比较EF Core v1.0 目前已经增加了不少功能. EF Core除了常用的增删改模型操作,Sql语句在不少项目中是不能避免的. 在EF Core中上下文 ...
- [原创]java WEB学习笔记43:jstl 介绍,core库详解:表达式操作,流程控制,迭代操作,url操作
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- net core WebApi——使用NPOI导入导出操作
目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...
- .NET Core C# 中级篇2-7 文件操作
.NET Core CSharp 中级篇2-7 本节内容为文件操作 简介 文件操作在我们C#里还是比较常见的,例如我们读取Excel.Txt文件的内容,在程序中,这些文件都是以流的方式读取进入我们内存 ...
随机推荐
- Linux 静态库(.a)转换为动态库(.so)
Linux 静态库转换为动态库 参考 http://blog.csdn.net/moxuansheng/article/details/5812410 首先将.a文件转为.so文件是可以实现的 原因是 ...
- JavaScript学习系列8 - JavaScript中的关系运算符
JavaScript中有8个关系运算符,分别是 ===, !===, ==, !=, <, <=, >, >= 1. 恒等运算符 (===) ===也叫做 严格相等运算符,它要 ...
- enter键触发事件的清除
使用iframe弹窗时 父级页面 初始化的时候 给enter键绑定了事件 在子页面中 按下enter键会触发 而报错,此时在本页面的初始化的时候 将enter键绑定的方法取消 即可: $(docume ...
- 网络请求返回HTTP状态码(404,400,500)
HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...
- laravel 常见操作
1.url()
- CTO成长之路分享会
1. 李宏玮,纪源资本合伙人GGV,设计无人机,典型的投资: VC做投资,收入利润上市技术团队,架构支撑前沿科技,以后牛逼公司以技术为主 2. 小红书tiger2003加入谷歌,之前学phpgoogl ...
- 验证您的Shell为Bash
内容介绍 在管理Linux服务器时,命令行操作无疑是最为耗时的环节.对大多数用户而言,这意味着将大量时间用于操作Bash shell. 尽管大多数发行版都提供默认的用户类型与root prompts, ...
- java中的String,StringBuffrer,Stringbuilder的区别
简单描述下 效率:StringBuilder>StringBuffer>String 使用场景: 如果要操作少量的数据用 = String 单线程操作字符串缓冲区 下操作大量数据 = St ...
- 迎接仪式 dp
题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的 ...
- ie-"此更新不适应于此电脑"
cmd-dos命令 expand –F:* C:\update\Windows6.1-KB2533623-x64.msu C:\update\ dism.exe /online /Add-Packag ...