Dapper 链式查询 扩展

Dapper 链式查询扩展 DapperSqlMaker  

Github地址https://github.com/mumumutou/DapperSqlMaker

Demo:

  • 查询       TestsDapperSqlMaker\DapperSqlMaker.Test\ SelectDapperSqlMakerTest.cs
  • 添加       TestsDapperSqlMaker\DapperSqlMaker.Test\  InsertDapperSqlMakerTest.cs
  • 更新       TestsDapperSqlMaker\DapperSqlMaker.Test\  UpdateDapperSqlMakerTest.cs
  • 删除       TestsDapperSqlMaker\DapperSqlMaker.Test\  DeleteDapperSqlMakerTest.cs
  • 上下文类   TestsDapperSqlMaker\DbDapperSqlMaker\  LockDapperUtilsqlite.cs
简单栗子:
1.查询-联表查询,分页
 1 [Test]
 2 public void 三表联表分页测试()
 3 {
 4     LockPers lpmodel = new LockPers() { Name = "%蛋蛋%", IsDel = false};
 5     Users umodel = new Users() { UserName = "jiaojiao" };
 6     SynNote snmodel = new SynNote() { Name = "%木头%" };
 7     Expression<Func<LockPers, Users, SynNote, bool>> where = PredicateBuilder.WhereStart<LockPers, Users, SynNote>();
 8     where = where.And((lpw, uw, sn) => lpw.Name.Contains(lpmodel.Name));
 9     where = where.And((lpw, uw, sn) => lpw.IsDel == lpmodel.IsDel);
10     where = where.And((lpw, uw, sn) => uw.UserName == umodel.UserName);
11     where = where.And((lpw, uw, sn) => sn.Name.Contains(snmodel.Name));
12
13     DapperSqlMaker<LockPers, Users, SynNote> query = LockDapperUtilsqlite<LockPers, Users, SynNote>
14         .Selec()
15         .Column((lp, u, s) =>        // null) //查询所有字段
16             new { lp.Id, lp.InsertTime, lp.EditCount, lp.IsDel, u.UserName, s.Content, s.Name })
17         .FromJoin(JoinType.Left, (lpp, uu, snn) => uu.Id == lpp.UserId
18                 , JoinType.Inner, (lpp, uu, snn) => uu.Id == snn.UserId)
19         .Where(where)
20         .Order((lp, w, sn) => new { lp.EditCount, lp.Name, sn.Content });
21
22     var result = query.ExcuteSelect(); //1. 执行查询
23     WriteJson(result); //  打印查询结果
24
25     Tuple<StringBuilder, DynamicParameters> resultsqlparams = query.RawSqlParams();
26     WriteSqlParams(resultsqlparams);  // 打印生成sql和参数
27
28     int page = 2, rows = 3, records;
29     var result2 = query.LoadPagelt(page, rows, out records); //2. 分页查询
30     WriteJson(result2); //  查询结果
31 }

2.更新-更新部分字段

 1 [Test]
 2 public void 更新部分字段测试lt()
 3 {
 4     var issucs = LockDapperUtilsqlite<LockPers>.Cud.Update(
 5         s =>
 6         {
 7             s.Name = "测试bool修改1";
 8             s.Content = "update方法内赋值修改字段";
 9             s.IsDel = true;
10         },
11         w => w.Name == "测试bool修改1" && w.IsDel == true
12         );
13     Console.WriteLine(issucs);
14 }

3.七联表以上待扩展  copy六联表修改3个文件

  • DapperSqlMaker
  • Template_DapperSqlMaker 上下文类
  • PredicateBuilder             条件拼接类

4.实体生成T4模板使用方法    https://www.cnblogs.com/cl-blogs/p/7205954.html

原文地址:https://www.cnblogs.com/cl-blogs/p/10219126.html

时间: 2024-07-31 11:54:57

Dapper 链式查询 扩展的相关文章

数据库-链式查询

where where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询.表达式查询.快捷查询.区间查询.组合查询在内的查询操作.where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议. table table方法主要用于指定操作的数据表. alias alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等. field field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字

ASP.NET MVC学前篇之扩展方法、链式编程

前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的是外围的知识,有的是包含在框架内的. MVC学前篇字样?有噱头的成分也有真实的成分,所以工欲善其事,必先利其器.器是什么?基础嘛,虽然说MVC框架中涉及到的知识很多很多也不是我一篇两篇能说完的,我能做的就是知道多少就跟大家分享多少,当然了随着时间的推移会完善这个系列. 1扩展方法 扩展方法是C# 3.0特性里的知识,它用在最多的地方是在Linq中,

链式编程:泛型实现的扩展方法类

序言 本文分享一个用链式编程思想和泛型实现的扩展方法类,用于减少代码量,并提供更为清晰的业务逻辑代码表达. 概念 链式编程:将多个业务逻辑(方法)通过“.”(点号)串联起来的一种代码风格,形似链条,故称链式编程.核心思想在于每个方法均返回自身实例. 泛型:可以理解为是一个类的“篮子“”,只要符合约束的类均可以放置在该“篮子”里面. 扩展方法:向现有类添加方法. 根据泛型和扩展方法的特点,泛型+扩展方法实现了向所有符合约束的“类”添加方法,可减少重复代码量. (.Net语言提供了这么优雅的特性,刚

Javascript、C#、php、asp、python 等语言的链式操作的实现

一.什么是链式操作 把需要的下一步操作的对象通过上一步操作返回回来.使完成某些功能具有持续性. 二.链式操作优点 代码更精简优雅.链式操作能大大精简代码量,多项操作一行代码一气呵成,搞定: 链式操作应用场景除了想前端jquery方面的操作dom,后端web框架,在开发orm相关的框架也是常常用到 三.各种语言的链式操作实现 以下根据简单的实现数据库查询的类似实现一些web框架的 orm.查询类的各种DEMO 1.javascript 的链式操作大家最熟悉不过了,jquery 的整个框架就是链式操

简谈 JavaScript、Java 中链式方法调用大致实现原理

相信,在 JavaScript .C# 中都见过不少链式方法调用,那么,其中实现该类链式调用原理,大家有没有仔细思考过?其中 JavaScript 类库:jQuery 中就存在大量例子,而在 C# 中,其中 lambda 表达式的大量使用以及扩展方法的新增,使链式调用也见的不少. 首先,就谈谈 JavaScript 中链式调用,其实,也是就是运用之前提及的 this . var Person=function(name,age){ this.Name=name; this.Age=age; };

图的存储结构:邻接矩阵(邻接表)&amp;链式前向星

[概念]疏松图&稠密图: 疏松图指,点连接的边不多的图,反之(点连接的边多)则为稠密图. Tips:邻接矩阵与邻接表相比,疏松图多用邻接表,稠密图多用邻接矩阵. 邻接矩阵: 开一个二维数组graph[ ][ ]来记录图中点a与点b之间是否连通,初始化为0(或者-1之类的看情况):如果图中有可忽略的重边(如 只需重边中的最小边或最大边),则保存需要的那条边的边权,但如果有无法忽略的重边,就一定不要用邻接矩阵. int graph[MAXN][MAXN]; void graphInit() { me

jQuery插件编写及链式编程模型

jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQuery插件,然后像使用jQuery那样来操作DOM.  一.jQuery插件开发快速上手 1.jQuery插件模板 关于jQuery插件的编写,我们可以通过为jQuery.fn增加一个新的函数来编写jQuery插件.属性的名字就是你的插件的名字,其模板如下:

PHP链式操作输出excel(csv)

工作中经常会遇到产品运营让导出一些简单的比较规范的数据,这时候要是有一个简单的方法可以用就简单多了.下面是我的一个输出简单的excel(csv)的方法类,用到了链式操作.说到链式操作,在jquery中可能经常用到,是不是也感觉到链式操作用起来很爽,我们也在这个类中实现下链式操作. 其实链式操作很简单的,就是在前一个类方法最后返回一个该类的对象($this),提供给下一个方法调用. <?php class Array2csv{ /* *@var string $ext 扩展名 */ private

guoshiyv 数据结构与算法2-1 线性链式存储

线性链式存储:   包含两部分:1.存储的单个元素 2.指针,指向下一个的地址 typedef struct() { ElementType Data; struct Node *Next; }List ; List L,Ptrl;        Ps:算法应保证具有可移植性,(ElementType) 表长函数,相比顺序数组存储复杂,需要遍历所有元素 定义一个新指针,始终指向当前的这个链表. int length(List *Ptrl) { int i=0; List *p=Ptrl; whi