ShadowSql之借Dapper打通ORM最后一公里
ShadowSql专职拼写sql,要想做为ORM就需要借高人之手
我们要借的就是Dapper,Dapper以高性能著称,ShadowSql搭配Dapper就是强强联手
为此本项目内置了一个子项目Dapper.Shadow就是Dapper扩展
以下是Dapper.Shadow的示例
一、配置Dapper执行器
ISqlEngine engine = new SqliteEngine();
IDbConnection connection = new SqliteConnection("Data Source=file::memory:;Cache=Shared");
IExecutor executor = new DapperExecutor(engine, connection);
其中engine数据库(及方言)的配置对象,现在支持5种,分别是MsSql、MySql、Oracle、Postgres和Sqlite
二、读取整张表
var students = Executor.From("Students")
.ToDapperSelect()
.Get<Student>();
三、查询数据
1、SqlQuery查询数据
var students = Executor.From("Students")
.ToSqlQuery()
.Where("Age=10")
.ToDapperSelect()
.Get<Student>();
var students = Executor.From("Students")
.ToSqlQuery()
.ColumnValue("Age", 10)
.ToDapperSelect()
.Get<Student>();
var table = new StudentTable("Students");
var students = table.ToSqlQuery()
.Where(table.Age.EqualValue(10))
.ToSelect()
.Get<Student>(Executor);
var students = new StudentTable("Students")
.ToSqlQuery()
.Where(table => table.Age.EqualValue(10))
.ToSelect()
.Get<Student>(Executor);
var students = new Table("Students")
.DefineColums("Age")
.ToSqlQuery()
.Where(student => student.Column("Age").EqualValue(10))
.ToDapperSelect(Executor)
.Get<Student>();
主要分以下三种
1.1 把执行器当数据库对象,这样查询就自带执行器,可以直接执行
1.2 执行时把执行器当参数传入
1.3 先查询,调用ToDapperSelect创建可执行对象
2、Query查询数据
var table = new StudentTable("Students");
var students = table.ToQuery()
.And(table.Age.EqualValue(10))
.ToSelect()
.Get<Student>(Executor);
var students = Executor.From("Students")
.ToQuery()
.And(table => table.Field("Age").EqualValue(10))
.ToDapperSelect()
.Get<Student>();
var table = new StudentTable("Students");
var students = table.ToQuery()
.And(table.Age.EqualValue(10))
.ToDapperSelect(Executor)
.Get<Student>();
查询方式多样,限与篇幅没法一一
以上示例邮件可以清晰显示ShadowSql和Dapper可以无缝对接
实现了一个一个精简的高性能ORM
ShadowSql之借Dapper打通ORM最后一公里的更多相关文章
- Dapper小型ORM的使用(随便吐槽下公司)
近来公司又有新项目要做,之前做项目用过蛮多ORM,包括ef,NetTiers,ServiceStack.OrmLite等ROM,每种ORM都有一定的坑(或者说是使用者的问题吧~~).用来用去都觉的有一 ...
- Dapper.NET - ORM(ibatis.Net)
Dapper.NET使用 1.为什么选择Dapper 2.以Dapper(4.0)为例. 2.1 在数据库中建立几张表. 2.2实体类. 3.使用方法 3.1 一对一映射 3.2 一对多映射 3.3 ...
- ASP .Net Core 使用 Dapper 轻型ORM框架
一:优势 1,Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll. 2,Dapper很快.Dapper的速度接近与IDataReader,取列表 ...
- 企业应用架构研究系列十三:整合EFCore&Dapper 通用ORM框架EFDapper
EntityFrameworkCore是微软官网提供的ORM框架,是轻量化.可扩展.开源和跨平台的数据访问技术框架,但是在.Net 开发圈的评论却褒贬不一.很多人认为EFCore 执行的效能比较差,很 ...
- Dapper.net ORM
参考链接:https://github.com/StackExchange/dapper-dot-net Dapper - a simple object mapper for .Net Dapper ...
- Use Dapper ORM With ASP.NET Core
Dapper.NET is not just another ORM tool, it's considered as the king of ORM. Because it's fast, easy ...
- 使用轻量级ORM Dapper进行增删改查
项目背景 前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET.微软的EF.NH等.再跟经理讨论后,经理强调不要用Ef,NH做ORM,后期的sql优化不好做,公司 ...
- 轻量级ORM框架Dapper应用一:Dapper安装
一.Dapper简介 Dapper是一款轻量级ORM框架,为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果你在项目中遇到性能访问问题,选择Dapp ...
- ORM之Dapper运用
一.前言 上一篇[分层架构设计]我们已经有了架构的轮廓,现在我们就在这个轮廓里面造轮子.项目要想开始,肯定先得确定ORM框架,目前市面上的ORM框架有很多,对于.net人员来说很容易就想到以ADO.N ...
- Asp.net Core 系列之--2.ORM初探:Dapper实现MySql数据库各类操作
ChuanGoing 2019-09-10 距离上一篇近一个月时间,断断续续才把本篇码完,后面将加快进度,争取年度内把本系列基本介绍完成,同时督促本人持续学习. 本篇学习曲线: 1.初识Dapper ...
随机推荐
- ffmpeg简易播放器(1)--了解视频格式
视频帧 对于一份视频,实质上是多张图片高速播放形成的.每一张图片即为该视频的一帧.而每秒钟播放的图片张数便为所谓的帧率(Frame Rate/Frame Per Second).常见的帧率有24fps ...
- RocketMQ原理—1.RocketMQ整体运行原理
大纲 1.RocketMQ整体运行原理的介绍顺序 2.RocketMQ生产者是如何发送消息的 3.Broker是如何持久化接收到的消息到磁盘上 4.基于DLedger技术的Broker主从同步原理 5 ...
- 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
在本地部署DeepSeek大模型实现联网增强的AI应用 一.前言 在本地部署大语言模型(LLM)并赋予其联网能力,是当前AI应用开发的重要方向.本文将基于Microsoft Semantic Kern ...
- AI时代云动力:新一代弹性计算云主机开启智能计算新纪元!
随着信息技术的飞速发展,云计算在企业数字化转型中发挥着愈发重要的作用. 弹性计算作为云计算技术的重要组成部分,以灵活的资源分配.高可用性等优势,在数字化转型中扮演着举足轻重的角色. 为打造更加卓越的上 ...
- Luogu P11361 NOIP2024 编辑字符串 题解 [ 黄 ] [ 贪心 ]
编辑字符串:这题能评蓝已经说明了洛谷的唐氏. 结论 找到两个字符串种连续的且可以移动的所有极大子区间,然后线性扫一遍,看这一位所处的子区间中有多少个 \(0\) 和 \(1\),两个都有 \(0\) ...
- 流程控制之增强for循环
语法 for (声明语句:表达式){ //代码语句} 实例: package com.yeyue.struct;public class ForDemo05 { public stati ...
- PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
在之前的三篇文章中,笔者介绍了有关DeepSeek的基础操作,满足了不同类型的用户需求. 想利用大模型构建属于自己的智能知识库,无论你是想私有化部署,还是直接使用API调用,都可以在这三篇文章中找到答 ...
- [TJOI2015] 弦论 题解
所有子串,一眼 \(\text{SAM}\). 从根开始一直往下走,走到任何一个点都代表一个子串.维护 \(sm\) 表示每个子串有几个(\(t=0\) 就当一个),可以用树形 \(dp\) 跳后缀链 ...
- Flume - [05] Hbase sink
一.概述 此接收器将数据写入Hbase.Hbase配置是从类路径中遇到的第一个Hbase-site.xml获取的.由配置指定的实现 HbaseEventSerializer 的类用于将事件转换为 ...
- vue-element-admin安装趟坑
1.下载源码 2.执行 npm install --registry=https://registry.npm.taobao.org 如果遇到"git ls-remote -h -t&quo ...