1、读取数据库连接

private SqlSugarClient GetInstance()
{
string conmstring = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["BaseDb"].ToString();
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { InitKeyType = InitKeyType.Attribute, ConnectionString = conmstring, DbType = SqlSugar.DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}

2、定义别名

[SugarTable("ado.Student")] //别名处理

public class Student {
 
[SugarColumn(IsIgnore=true)]
public string xxx{get;set;} //这列在ORM会过滤掉
 
[SugarColumn(ColumnName="name")]
public string xxx{get;set;} //这列在ORM会当成 name处理
}

我们可以用Add的方式

db.MappingTables.Add()

db.MappingColumns.Add()
db.IgnoreColumns.Add() 

我们还可以用AS

//别名表
db.Queryable<T>().As("tableName").ToList(); //别名列
.Where(it=>SqlFunc.MappingColumn(it.OldName,"NewName") == "jack") 

他们之间的优先级:

AS>Add>属性方式

3、小技巧

Queryable<T>().AS("(select * from [student]) t").ToPageList(1,2);

使用函数 SqlFunc类

var getByFuns = db.Queryable<Student>().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList();

是否存在这条记录

var isAny2 = db.Queryable<Student>().Any(it => it.Id == -1);
获取同一天的记录

var getTodayList = db.Queryable<Student>().Where(it => SqlFunc.DateIsSame(it.CreateTime, DateTime.Now)).ToList();

4、IN查询

var in1 = db.Queryable<Student>().In(it=>it.Id,new int[] { 1, 2, 3 }).ToList();

var in1 = db.Queryable<Student>().In(it=>it.Id,new int[] { 1, 2, 3 }).ToList();

5、多个Queryable

var q1= db.Queryable<DataItemEntity, DataItemDetailEntity>((a, b) => new object[] {
JoinType.Left,a.ItemId==b.ItemId,
}).Select((a,b) => b);

var q2 = db.Queryable<QRFileEntity>();

var innerjoin = db.Queryable(q1, q2, JoinType.Inner, (j1, j2) => j1.ItemDetailId == j2.ParentId).Select((j1, j2) => j1).ToList();

6、MappingColumn 实现复杂的功能

 var s2 = db.Queryable<Student>()

 .Select(it => new { id = it.Id, rowIndex=SqlFunc.MappingColumn(it.Id, " row_number() over(order by id)") }).ToList();
 
7、列明动态查询

var propertyName = "ItemDetailId'"; //类中的属性的名称
var dbColumnName = db.EntityProvider.GetDbColumnName<DataItemDetailEntity>(propertyName);
var list2 = db.Ado.SqlQuery<DataItemDetailEntity>(string.Format("select * from DataItemDetail where {0} =@value ", dbColumnName), new { value =""}).ToList();

8、分组返回所有列

var file = db.Queryable<QRFileEntity>().PartitionBy(c => c.FName).Select(c => c).ToList();

9、联表更新

var res = db.Updateable<QRFileEntity>().UpdateColumns(c => new QRFileEntity
{
  CreateUserName = SqlFunc.Subqueryable<UserEntity>().Where(d => d.UserId == "").Select(d => d.RealName),
  FName = ""
}).Where(c => c.FileId == "").ExecuteCommand();

SqlSugar 盲点的更多相关文章

  1. .NET 开源SqlServer ORM框架 SqlSugar 3.0 API

    3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 更新列表:https://github.com/sunkaixuan/SqlSugar/releases 优点: SqlSuga ...

  2. T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll

    生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文 ...

  3. 开源网站.NETMVC+ Layui+SqlSugar+RestSharp

    SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 ...

  4. SqlSugar ORM已经支持读写分离

    目前只有MYSQL版 3.5.2.9 支持,其库版本12月3号更新该功能 用例讲解 using (var db = new SqlSugarClient("主连接字符串", &qu ...

  5. Dapper ORM VS SqlSugar ORM的 8场对决

    CUP和.NET SQL版本不同也会存在少许差距,但不会有质变,下面的测试结果仅供参考 比赛规则 1.统一使用Realse版本的最新 DLL,Realse模式启用程序 2.为了平衡CPU和数据库空闲情 ...

  6. Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8

    3.0最新API: http://www.cnblogs.com/sunkaixuan/p/5911334.html 1.前言/Preface SqlSugar从去年到现在已经一年了,版本从1.0升到 ...

  7. 【开源项目SugarSite】ASP.NET MVC+ Layui+ SqlSugar+RestSharp项目讲解

    SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 ...

  8. C语言 malloc()与sizeof运算的盲点

    //malloc()与sizeof运算的盲点 #include <stdio.h> #include <stdlib.h> #include <string.h> ...

  9. ASP.NET - SqlSugar ORM框架 更新列表

    以后SqlSugar所有更新都会在这个贴子更新 SqlSugar是一款轻量级的MSSQL ORM ,除了具有媲美ADO的性能外还具有和EF相似简单易用的语法. 学习列表 0.功能更新 1.SqlSug ...

随机推荐

  1. 如何成为Android高手

    要成为Android 高手并不是一件容易的事情.并不是很多人想象的 能够飞快的写出几行漂亮的代码去解决一些困难的问题 就是Android 高手了.真正的Android 高手需要考虑的问题远远不是写些漂 ...

  2. 更改EBS服务器域名/IP

    more: 341322.1 : How to change the hostname of an Applications Tier using AutoConfig 338003.1 : How  ...

  3. Android全局异常处理 实现自己定义做强制退出和carsh日志抓取

    在做android项目开发时,大家都知道都会遇到程序报错或者Anr异常,会弹出来一个强制退出的弹出框,对于开发人员是好事,但是对于用户体验和 UI实在毫无违和感,别说用户接受不了,就连我们自己本身可能 ...

  4. 第一个Polymer应用 - (4)收尾工作

    原文链接: Step 4: Finishing touches翻译日期: 2014年7月8日翻译人员: 铁锚在本节中,会在卡片上添加收藏按钮,并可以通过切换选项卡(tabs)连接到不同的 <po ...

  5. 摄像头ov2685中关于sensor id 设置的相关的寄存器地址

    OV2685 : CHIP_ID address : 0x300A    default : 0x26 address : 0x300B    default : 0x85 address : 0x3 ...

  6. ruby抓取web页面

    一种方法是Net::HTTP.new方法,返回resp码和实际的data: require 'net/http' h = Net::HTTP.new("www.baidu.com" ...

  7. <<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步(1)

    <<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步 并发问题是所有问题的基础,也是操作系统设计的基础.并发包括很多设计问题,其中有进程间通信,资源共享与竞争,多个 ...

  8. intersection of two linked lists.(两个链表交叉的地方)

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  9. Jquery的过滤选择器分为哪几种?

    Jquery的过滤选择器分为哪几种? 转载▼ 标签: jquery 过滤选择器 分类 分类: JQuery 所有的过滤选择器分为哪几种: 一.基本过滤选择器(重点掌握下列八个) :first 选取第一 ...

  10. 使用JConsole以及VisualVM进行jvm程序的监控,排错,调优

    这里只是做一个备份,便于以后继续. 添加两个感觉好的链接吧: http://www.linuxidc.com/Linux/2015-02/113420.htm http://blog.csdn.net ...