介绍一些我尝试的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的一些稍复杂操作的更多相关文章

  1. .net core下对于Excel的一些操作及使用

    原文:.net core下对于Excel的一些操作及使用 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...

  2. .net core +mysqlSugar(最为简单的增删改查)

    首先建立.net Core API - empty 这个就不说了 然后创建新的Controller 记得添加路由 [Route("api/Users")] 然后在Nuget Pac ...

  3. asp.net core 1.1 升级后,操作mysql出错的解决办法。

    遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到MissingMethodException问题,更新.插入操作没有问题. 如果你也遇到这个问题,请参照以下步骤进行升 ...

  4. Asp.net Core基于MVC框架实现PostgreSQL操作

    简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...

  5. [小技巧]EF Core中如何获取上下文中操作过的实体

    原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...

  6. EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery

    一.目前EF Core的版本为V2.1 相比较EF Core v1.0 目前已经增加了不少功能. EF Core除了常用的增删改模型操作,Sql语句在不少项目中是不能避免的. 在EF Core中上下文 ...

  7. [原创]java WEB学习笔记43:jstl 介绍,core库详解:表达式操作,流程控制,迭代操作,url操作

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. net core WebApi——使用NPOI导入导出操作

    目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...

  9. .NET Core C# 中级篇2-7 文件操作

    .NET Core CSharp 中级篇2-7 本节内容为文件操作 简介 文件操作在我们C#里还是比较常见的,例如我们读取Excel.Txt文件的内容,在程序中,这些文件都是以流的方式读取进入我们内存 ...

随机推荐

  1. Linux 静态库(.a)转换为动态库(.so)

    Linux 静态库转换为动态库 参考 http://blog.csdn.net/moxuansheng/article/details/5812410 首先将.a文件转为.so文件是可以实现的 原因是 ...

  2. JavaScript学习系列8 - JavaScript中的关系运算符

    JavaScript中有8个关系运算符,分别是 ===, !===, ==, !=, <, <=, >, >= 1. 恒等运算符 (===) ===也叫做 严格相等运算符,它要 ...

  3. enter键触发事件的清除

    使用iframe弹窗时 父级页面 初始化的时候 给enter键绑定了事件 在子页面中 按下enter键会触发 而报错,此时在本页面的初始化的时候 将enter键绑定的方法取消 即可: $(docume ...

  4. 网络请求返回HTTP状态码(404,400,500)

    HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...

  5. laravel 常见操作

    1.url()

  6. CTO成长之路分享会

    1. 李宏玮,纪源资本合伙人GGV,设计无人机,典型的投资: VC做投资,收入利润上市技术团队,架构支撑前沿科技,以后牛逼公司以技术为主 2. 小红书tiger2003加入谷歌,之前学phpgoogl ...

  7. 验证您的Shell为Bash

    内容介绍 在管理Linux服务器时,命令行操作无疑是最为耗时的环节.对大多数用户而言,这意味着将大量时间用于操作Bash shell. 尽管大多数发行版都提供默认的用户类型与root prompts, ...

  8. java中的String,StringBuffrer,Stringbuilder的区别

    简单描述下 效率:StringBuilder>StringBuffer>String 使用场景: 如果要操作少量的数据用 = String 单线程操作字符串缓冲区 下操作大量数据 = St ...

  9. 迎接仪式 dp

    题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的 ...

  10. ie-"此更新不适应于此电脑"

    cmd-dos命令 expand –F:* C:\update\Windows6.1-KB2533623-x64.msu C:\update\ dism.exe /online /Add-Packag ...