.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文件的内容,在程序中,这些文件都是以流的方式读取进入我们内存 ...
随机推荐
- hbase->Mapreduce->hbase
Hbase对Mapreduce API进行了扩展,方便Mapreduce任务读写HTable数据. package taglib.customer; import java.io.IOExceptio ...
- ASP.NET MVC中的ActionFilter介绍学习
一直都知道MVC中的ActionFilter,只是没有在实际项目中使用过. 顾名思义,ActionFilter就是指在Action上的Filter, 那么,在Action上的Filter到底有哪些呢. ...
- 20170527关于Thingking in Java
由于工作上的需求,要开始学习Android开发,所以先开始看一些Java方面的知识.学习从Thingking in Java开始,看了一下第一张,感觉真的是一本好书,希望自己努力把他看完,加油! 第一 ...
- MATLAB解决常微分方程
首先得介绍一下,在matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法.在本科阶段的微分数学题,基本上可以通过符号解法解决. 用matlab解决常微分问题的符号解法的关键命令是d ...
- rgbdslam_v2编译过程中引起的needed by错误
Ubuntu16.04,ROS kinectic 报错信息为“ make[2]: *** No rule to make target '/home/william/slam/g2o/lib/libg ...
- vue -- 父子组件间的事件触发
1.父组件触发子组件事件 Parent.vue <child ref="child"></child> <div @click="fn&qu ...
- 水库(树形dp)
水库 (树形dp) R国有n座城市和n-1条长度为1的双向道路,每条双向道路连接两座城市,城市之间均相互连通.现在你需要维护R国的供水系统.你可以在一些城市修建水库,在第i个城市修建水库需要每年c_i ...
- Mysql-2-数据库基础
(1)mysql是一个小型关系型数据库管理系统. (2)mysql是一个快速.多线程.多用户.健壮的SQL数据库服务器.与其他数据库管理系统比,mysql有以下的优势: mysql是一个关系数据库管理 ...
- JavaWeb:Servlet技术
JavaWeb:Servlet技术 快速开始 Servlet是什么 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 ...
- 背包DP【bzoj2287】: 【POJ Challenge】消失之物
2287: [POJ Challenge]消失之物 Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. &q ...