dapper

C# 数据操作系列

蹲街弑〆低调 提交于 2020-07-28 14:08:26
0. 前言 前一篇我们详细的介绍了SqlSugar的增删改查,那些已经满足我们在日常工程开发中的使用了。但是还有一点点在开发中并不常用,但是却非常有用的方法。接下来让我们一起来看看还有哪些有意思的内容。 1. 不同寻常的查询 之前介绍了针对单个表的查询,同样也是相对简单的查询模式。虽然开发完全够用,但是难免会遇到一些特殊的情况。而下面这些方法就是为了解决这些意料之外。 1.1 多表查询 SqlSugar提供了一种特殊的多表查询方案,使用IQueryable接口 。来看看是怎样操作的吧: ISugarQueryable<T, T2> Queryable<T, T2>(Expression<Func<T, T2, object[]>> joinExpression); ISugarQueryable<T, T2> Queryable<T, T2>(ISugarQueryable<T> joinQueryable1, ISugarQueryable<T2> joinQueryable2, Expression<Func<T, T2, bool>> joinExpression) where T : class, new() where T2 : class, new(); ISugarQueryable<T, T2> Queryable<T, T2>(ISugarQueryable<T>

1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)

狂风中的少年 提交于 2020-07-28 04:16:38
1.NetDh框架开始的需求场景 需求场景: 1.之前公司有不同.net项目组,有的项目是用SqlServer做数据库,有的项目是用Oracle,后面也有可能会用到Mysql等,而且要考虑后续扩展成主从库、多库的需求。( 其实不管有没有这个需求,Dapper的封装应当像NetDh框架里封装的那样使用) ; 2.涉及日志操作类的设计,需要记录用户操作日志、记录系统异常日志等; 3.涉及缓存操作类的设计,这点不用需求都应该当考虑,不管是小项目的内存缓存还是大项目中的Redis/Memcache等; 4.涉及二次开发模式简单的设计。因为多个客户需要同一个项目产品,但是客户之间对该产品的需求点又有些不一样。 本文先讲为了第1点需求而封装的数据库操作类,其它三点在接下来文章中也会介绍。 2.ORM框架Dapper介绍 Dapper是轻量级高效的框架,它高效原因是利用 Emit技术 + 各种解析缓存 + DataReader 。 Dapper可以在所有Ado.net Providers下工作,包括SQL Server, Oracle, MySQL , SQLite, PostgreSQL, sqlce, firebird 等,这些数据库操作类都有实现IDbConnection接口。你看源码会发现,Dapper提供的public方法大都是对IDbConnection的扩展。

NetCore+Dapper WebApi架构搭建(一):基本框架

有些话、适合烂在心里 提交于 2020-07-28 04:05:31
初衷是想用dapper搭建一个高性能的架构,因为dapper操作数据库的效率很高 1、VS创建一个NetCore WebApi的框架,然后解决方案添加一个NetStandard的类库 整个解决方案如图所示 2、根据DDD架构的思想类库完全充当一个仓储的功能,因为服务层本来就是提供接口的,所以这里不再构建Application层,直接使用WebApi充当Application层,由于底层使用的是Dapper,所以数据层直接和仓储层合并了,要是使用EntityFramework,需要再构建一个EntityFramework层独立于仓储层 3、从解决方案中可以看出Entities文件夹就是存放实体类的,而Helper文件夹则是封装了一些常用的操作类RedisHelper只是写了写,具体还没有用到,而IRepository是仓储接口,Repository是仓储接口实现类,至于直接放在类库下面的这些类,下一讲会详细讲解的。 好了,架构不在多,能够看明白,能使用,完成具体的功能就可以了,楼主水平不高,如实架构有什么不足之处,还希望不吝赐教 源码地址: https://github.com/wangyulong0505/Dinner 来源: oschina 链接: https://my.oschina.net/u/4265623/blog/4436805

1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)

安稳与你 提交于 2020-07-27 21:54:15
1.NetDh框架开始的需求场景 需求场景: 1.之前公司有不同.net项目组,有的项目是用SqlServer做数据库,有的项目是用Oracle,后面也有可能会用到Mysql等,而且要考虑后续扩展成主从库、多库的需求。( 其实不管有没有这个需求,Dapper的封装应当像NetDh框架里封装的那样使用) ; 2.涉及日志操作类的设计,需要记录用户操作日志、记录系统异常日志等; 3.涉及缓存操作类的设计,这点不用需求都应该当考虑,不管是小项目的内存缓存还是大项目中的Redis/Memcache等; 4.涉及二次开发模式简单的设计。因为多个客户需要同一个项目产品,但是客户之间对该产品的需求点又有些不一样。 本文先讲为了第1点需求而封装的数据库操作类,其它三点在接下来文章中也会介绍。 2.ORM框架Dapper介绍 Dapper是轻量级高效的框架,它高效原因是利用 Emit技术 + 各种解析缓存 + DataReader 。 Dapper可以在所有Ado.net Providers下工作,包括SQL Server, Oracle, MySQL , SQLite, PostgreSQL, sqlce, firebird 等,这些数据库操作类都有实现IDbConnection接口。你看源码会发现,Dapper提供的public方法大都是对IDbConnection的扩展。

LR敏捷软件平台v7开发示例,功能设计模块化,UI特色明显(长文)

霸气de小男生 提交于 2020-07-27 10:03:08
*框架整体代码层次 整体采用多层工厂/依赖注入模式。 *开发示例 力软框架提供了比较友好的开发向导 在用力软框架进行快速开发时有两种开发模式,一种是纯自定义表单无需编译的,一种是需要生成代码,重新编译的。 *代码生成开发模式 选择一种开发向导 指定数据源、对各项开发参数进行设置 跟着开发向导一步步设置就可以自动生成代码,代码会根据开发者的设置放入到指定项目的指定位置。 标准的 MVC 架构,表示层代码在 LeaRun.Application.Web 项目下。 实体层代码被自动放置在 Entity 下 下面是实体层代码。 下面是业务逻辑层,这里是按工厂模式生成的,当然框架里已经提供了 IOC 容器也可以直接调整成依赖注入模式。 接口层代码 数据访问层,数据工厂已经将对数据库的访问提供了 EF 及 Dapper 这两种 ORM 的封,绝大部分情况下不需要写 SQL 语句,普通的 Lambda 表达式即可完成各种查询,代码整洁,可读性很好。 如果需要换成依赖注入模式,只需在 IOC 配置文件注册即可 下面是 MVC 中的视图层 前后端通过 ajax+json 交互。 就像上面,后台返回的 json 数据,很简单的就绑定到了表格上。像数据字典的也不用写 SQL 关联,这里的数据字典,直接就可以显示来名称。当然这些代码都是可以生成出来的,需要二次开发的话可以直接修改这些代码。

C#的dapper使用

感情迁移 提交于 2020-07-26 04:32:24
Dapper是一款轻量级ORM工具( Github )。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。 为什么选择Dapper 轻量。只有一个文件( SqlMapper.cs ),编译完成之后只有120k(好象是变胖了) 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server 可以映射一对一,一对多,多对多等多种关系。 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。 支持FrameWork2.0,3.0,3.5,4.0,4.5 Dapper的安装 方法一:使用NuGet安装 打开visual studio的项目,依次点击 工具 , NuGet包管理器 , 管理解决方案的NuGet程序包 ; 再点击 浏览 , 搜索dapper , 点击搜索结果中的Dapper , 勾选项目 , 选择安装 ; 在 解决方案管理器中点击项目 , 查看引用 ,如果有

手把手撸套框架-ORM框架的选择

自作多情 提交于 2020-07-24 08:32:34
目录 一,为什么选择SqlSugar? 在.net core ORM框架中,能选择的方案其实有很多,包括以下方案: 1,EF-Core 2,Dapper 3,FreeSql 4,SqlSugar 为什么最后选择了Sqlsugar 呢? 一个个来说, 首先是: EF-core 。 EF-core 一开始想法也是担心性能问题,大概在7年前 有尝试过一次EF,深深被EF的性能所折服 实在是太慢了,当然做一些小型项目,EF当然是体现不出性能差距的,但是谁又知道自己的“小项目”哪天不会随着 业务的发展变成“大项目” 呢? 所以,一开始对EF 以及EF-Core 没有好感,不过后来看了,EF-Core的官网介绍, 感观上发生了很大的变化, 总的来说就是: EF 和 EF-Core 完全是两个东西。 更准确的说是:.net Core 和 .net Famework 完全是两个东西。 这么说吧, .net Core在性能上完全不怂 java,go,python,php 任何一种语言,再说.net 性能不好的,可以啪啪打脸了。 但是,我还是首先淘汰了,EF-Core。原因是,查百度各种ORM都拿EF-core 做性能测试,可以参考以下连接: 参考: https://www.cnblogs.com/kellynic/p/10557882.html 虽然,EF-Core 性能跟EF 不能同日而语,但是

It is possible to stream a large SQL Server database result set using Dapper?

僤鯓⒐⒋嵵緔 提交于 2020-07-18 03:58:31
问题 I have about 500K rows I need to return from my database (please don't ask why). I will then need to save these results as XML (more URGH) and the ftp this file to somewhere magical. I also need to transform the each row in the result set. Right now, this is what I'm doing with say .. TOP 100 results: using Dapper's Query<T> method, which throws the entire result set into memory I then use AutoMapper to convert the database POCO to my FileResult POCO Convert to XML Then save this collection

SQL and Dapper Performance Implicit Conversion

我们两清 提交于 2020-06-26 04:50:02
问题 How do we prevent SQL Implicit Conversions in Dapper? We realized, we were conducting an SQL Implicit conversion, causing an Index Scan and Deadlocks. Dapper parameters are nvarchar, while SQL table columns are varchar. This caused all our sql columns convert into nvarchar. We fixed the issue by going through all our embedded Dapper code and converting columns as cast(@SSN as varchar(9)), cast(@LastName as varcarh(25)), cast(@EmployeeId as varchar(10) There has got to be an easier way, is

SQL and Dapper Performance Implicit Conversion

[亡魂溺海] 提交于 2020-06-26 04:49:17
问题 How do we prevent SQL Implicit Conversions in Dapper? We realized, we were conducting an SQL Implicit conversion, causing an Index Scan and Deadlocks. Dapper parameters are nvarchar, while SQL table columns are varchar. This caused all our sql columns convert into nvarchar. We fixed the issue by going through all our embedded Dapper code and converting columns as cast(@SSN as varchar(9)), cast(@LastName as varcarh(25)), cast(@EmployeeId as varchar(10) There has got to be an easier way, is