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 ...
随机推荐
- biancheng-Python教程
目录http://c.biancheng.net/python/ 1Python编程基础2Python编程环境搭建3变量类型和运算符4列表.元组.字典和集合5Python字符串常用方法6Python流 ...
- 平滑升级mariadb
问题 Centos7自带的MariaDB版本是5.5 ,版本过于老旧,现想升级到最新版本,且数据不丢失 措施 备份原来的数据 mysqldump -u root -p --all-databases ...
- bullyBox pg walkthrough Intermediate
nmap 发现80 和 22端口 访问80 端口发现 跳转 http://bullybox.local/ 在/etc/hosts 里面加上这个域名 dirsearch 扫描的时候发现了.git泄露 用 ...
- axios请求拦截器和响应拦截器
axios里面可以设置拦截器 ,在请求发送之前做一些事情: 拦截器分[请求拦截器]和[响应拦截器] 参考地址:https://www.jb51.net/article/150014.htm 参考的地址 ...
- calcite-avatica数据传输时对日期类型压缩,导致客户端展示数据异常问题排查
一.背景 用户使用如下sql来获取周开始和结束时间,直连presto查询该sql,得到的week_start=2019-12-30,而通过calcite-avatica查询出结果为week_start ...
- 干货:DeepSeek+SpringAI实现流式对话!
前面一篇文章我们实现了<炸裂:SpringAI内置DeepSeek啦!>,但是大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给 ...
- 聊聊DeepSeek的MLA和GRPO
关注公众号回复1 获取一线.总监.高管<管理秘籍> 结合近期对DeepSeek的探索,对之前文章的内容做一些更新,主要是两个方面:训练过程的优化策略GRPO,以及架构侧的一个创新MLA. ...
- 硅基流动最新邀请码:9MqV8tO4
硅基流动最新邀请码:9MqV8tO4 硅基流动最新邀请码:9MqV8tO4
- Java基础常见知识、面试题总结 (上)
Java语言有哪些特点 简单易学: 面向对象(封装,继承,多态): 平台无关性( Java 虚拟机实现平台无关性): 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来 ...
- 用 Emacs 写代码有哪些值得推荐的插件
以下是一些用于 Emacs 写代码的值得推荐的插件: Ido-mode:交互式操作模式,它用列出当前目录所有文件的列表来取代常规的打开文件提示符,能让操作更可视化,快速遍历文件. Smex:可替代普通 ...