dapper

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

若如初见. 提交于 2020-08-13 09:02:50
目录 一,为什么选择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 不能同日而语,但是

.net core 基于Dapper 的分库分表开源框架(core-data)

社会主义新天地 提交于 2020-08-12 00:12:06
一、前言 感觉很久没写文章了,最近也比较忙,写的相对比较少,抽空分享基于 Dapper 的分库分表开源框架 core-data 的强大功能,更好的提高开发过程中的效率; 在数据库的数据日积月累的积累下,业务数据库中的单表数据想必也越来越大,大到百万、千万、甚至上亿级别的数据,这个时候就很有必要进行数据库读写分离、以及单表分多表进行存储,提高性能,但是呢很多人不知道怎么去分库分表,也没有现成的分库分表的成熟框架,故不知道怎么下手,又怕影响到业务;现在我给大家推荐 core-data 的分库分表开源框架。框架开源地址: https://github.com/overtly/core-data 二、基础 2.1 回顾 这里先来回顾下我上一篇文章中的技术栈路线图,如下: 今天从这张技术栈图中来详细分享一切的基础数据库底层操作ORM。 2.2 core-data主要优势: 上一篇文章 .Net 微服务架构技术栈的那些事 中简单的介绍了 core-data 主要优势,如下: 官方建议使用DDD 领域驱动设计思想开发 支持多种数据库(MySql / SqlServer / SQLite ),简单配置添加链接的配置即可 支持分表操作,自定义分表策略的支持 支持表达式方式编写,减少写Sql语句机械性工作 可对Dapper 进行扩展 性能依赖于Dapper 本身的性能,Dapper 本身是轻量级ORM

dapper sqlserver 分页

故事扮演 提交于 2020-08-11 18:20:16
原文: dapper sqlserver 分页 sqlserver 2012及以后使用: Copy SELECT * FROM {TableName} ORDER BY {OrderBy} OFFSET 20 ROWS FETCH NEXT 5 ROWS ONLY 以前使用: Copy SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY {OrderBy}) AS PagedNumber, {SelectColumns} FROM {TableName} {WhereClause}) AS u WHERE PagedNumber BETWEEN (({PageNumber} -1 ) * {RowsPerPage} + 1 ) AND ({PageNumber} * {RowsPerPage}) 参考: https://github.com/ericdc1/Dapper.SimpleCRUD/blob/58fffc5b1eddcbf523ab033c46e9a594f662218a/Dapper.SimpleCRUD/SimpleCRUD.cs#L98 https://stackoverflow.com/questions/9848592/dapper-paging https://github.com/StackExchange

FreeSql 扩展包实现 Dapper 的使用习惯

橙三吉。 提交于 2020-08-11 02:04:03
简介 FreeSql.Connection.Extensions 这是 FreeSql 衍生出来的扩展包,实现(Mysql/postgresql/sqlserver/Oracle/SQLite)数据库连接对象扩展方法,像 Dapper 一样的使用习惯。QQ群:4336577(已满)、8578575(在线) 快速上手 dotnet add package FreeSql.Connection.Extensions 测试实体类 class TestConnectionExt { public Guid id { get; set; } public string title { get; set; } public DateTime createTime { get; set; } = DateTime.Now; } 查询 和 FreeSql 一样的查询方法。 using (var conn = new MySqlConnection(_connectString)) { var list = conn.Select<TestConnectionExt>().Where(a => a.id == item.id).ToList(); } 插入 和 FreeSql 一样的插入方法。 using (var conn = new MySqlConnection(_connectString)

C#枚举高级战术

爷,独闯天下 提交于 2020-08-10 14:29:11
文章开头先给大家出一道面试题: 在设计某小型项目的数据库(假设用的是 MySQL)时,如果给用户表(User)添加一个字段(Roles)用来存储用户的角色,你会给这个字段设置什么类型?提示:要考虑到角色在后端开发时需要用枚举表示,且一个用户可能会拥有多个角色。 映入你脑海的第一个答案可能是:varchar 类型,用分隔符的方式来存储多个角色,比如用 1|2|3 或 1,2,3 来表示用户拥有多个角色。当然如果角色数量可能超过个位数,考虑到数据库的查询方便(比如用 INSTR 或 POSITION 来判断用户是否包含某个角色),角色的值至少要从数字 10 开始。方案是可行的,可是不是太简单了,有没有更好的方案?更好的回答应是整型(int、bigint 等),优点是写 SQL 查询条件更方便,性能、空间上都优于 varchar。但整型毕竟只是一个数字,怎么表示多个角色呢?此时想到了二进制位操作的你,心中应该早有了答案。且保留你心中的答案,接着看完本文,或许你会有意外的收获,因为实际应用中可能还会遇到一连串的问题。为了更好的说明后面的问题,我们先来回顾一下枚举的基础知识。 枚举基础 枚举类型的作用是限制其变量只能从有限的选项中取值,这些选项(枚举类型的成员)各自对应于一个数字,数字默认从 0 开始,并以此递增。例如: public enum Days { Sunday, Monday,

谁说Cat不能做链路跟踪的,给我站出来

こ雲淡風輕ζ 提交于 2020-08-09 10:46:44
背景 链路跟踪,我们有很多可选项。常见的有 zipkin,pinpoint,skywalking,jaeger 等。 基本上都是根据谷歌的《Dapper 大规模分布式系统的跟踪系统》这篇论文发展出来的。 今天讲下 Cat 里的链路跟踪要如何来实现,没用过 Cat 的同学可以查看我的这篇文章 《熬夜之作:一文带你了解 Cat 分布式监控》进行了解。 在 Cat 中可以很方便的看到每个请求的总耗时以及业务操作,数据库操作的耗时情况。对于服务之间的调用也可以通过埋点的方式进行监控。 如下图,可以看出请求内发起了一次 RPC 的调用,callRPC 开头的那条记录。耗时 11ms, 但是这个 RPC 服务内部耗时花在哪里了,在这边不能直接查看,只能去另一个服务中查看,不是很方便。 图片 详细的我画了一张图说明下现在的问题: 从上图可以看出,一个请求经过了多个服务,每个服务中对远程调用或者本地调用都有埋点,这样就能监控到调用的异常和性能指标。 下面一部分是在 Cat 中我们去查看这些指标的场景,Cat 中的数据展示是以项目维度来展示的,所以每个服务都有自己的监控数据。 如果我想要知道刚刚那次请求,在整个链路中哪里最慢,耗时在哪里,我得分别去 4 个服务下面才能看到这些信息,不直观。 实现方式 如下图所示: 从网关到服务,从服务到服务,都需要将 Trace 信息进行传递才可以将整个链路串起来

系列13 docker asp.net core部署

安稳与你 提交于 2020-08-09 02:26:15
一.介绍     本篇完整介绍asp.net core web api如何部署到docker容器中,并通过外部访问web api服务。在编写完成dockerfile之后,可以通过docker [image] build命令来创建镜像。     基本的格式为: docker build [options] path | url | -     该命令将读取指定路径(包括子目录)的dickerfile,并将该路径下所有数据作为上下文发送给docker服务端。docker服务端在校验dockerfile格式通过后,啄条执行其中定义的指令,碰到ADD, COPY 和RUN指令会生成一层新的镜像。最终如果创建镜像成功,会返回最终镜像的ID。    1. dockerfile文件创建     创建asp.net core web api应用程序,项目名为:k8swebapi。 dockerfile如下所示: FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime WORKDIR /app EXPOSE 5000 COPY . . ENTRYPOINT ["dotnet", "k8swebapi.dll", "--urls", "http://*:5000;http://*:5001"]    2.上传     asp.net core

Learun快速开发平台,一个开源可视化的开发平台

試著忘記壹切 提交于 2020-08-08 19:40:18
简介 Learun快速开发平台 ,是一个以模块化为核心的快速开发平台,是一个集PC和APP快速开发、系统管理、任务监控、开发工具、可视化数据源管理与数据构建、API动态生成与统计、工作流、可视化表单设计、小程序等全方位功能于一体的高效、稳定的快速开发平台。 平台采用Jquery、Bootstrap、Dapper ORM、jquery mobile、vue.js、uni-app等核心技术。 功能特色 1. 模块化 丰富的模块稳定的框架后台极易上手 目前已包括敏捷开发、系统管理、单位组织、自定义流程、移动管理、报表系统、工作流引擎、开发工具等模块。 2. 快速开发 强大的代码生成器与代码模板一步到位创表、代码生成即刻开发,可视化配置与自定义接口分秒接入,权限控制、统计报表等一个都不能少。 3. 工作流引擎 像“乐高”一样做开发,严谨的工作流开发流程,拖拽式设计表单,可视化流程开发直观展示管理流程,所见即所得;还有企业级专业流程引擎等您咨询。 4. 可视化开发 整个平台贯彻可视化开发原则,平台首页任意模块都可以手动编辑,可视化报表开发更是简单,平台内部选好模板和布局,连接好数据库,做好SQL就行了。 5. 跨多端开发 Learun是PC和APP一体化开发平台,而APP有安卓、iOS、H5的区别,各大平台又有各自的小程序系统,learunAPP基于uni-app框架,一套代码可运行所有平台

Learun快速开发平台,一个开源可视化的开发平台

六月ゝ 毕业季﹏ 提交于 2020-08-08 12:21:11
简介 Learun快速开发平台 ,是一个以模块化为核心的快速开发平台,是一个集PC和APP快速开发、系统管理、任务监控、开发工具、可视化数据源管理与数据构建、API动态生成与统计、工作流、可视化表单设计、小程序等全方位功能于一体的高效、稳定的快速开发平台。 平台采用Jquery、Bootstrap、Dapper ORM、jquery mobile、vue.js、uni-app等核心技术。 功能特色 1. 模块化 丰富的模块稳定的框架后台极易上手 目前已包括敏捷开发、系统管理、单位组织、自定义流程、移动管理、报表系统、工作流引擎、开发工具等模块。 2. 快速开发 强大的代码生成器与代码模板一步到位创表、代码生成即刻开发,可视化配置与自定义接口分秒接入,权限控制、统计报表等一个都不能少。 3. 工作流引擎 像“乐高”一样做开发,严谨的工作流开发流程,拖拽式设计表单,可视化流程开发直观展示管理流程,所见即所得;还有企业级专业流程引擎等您咨询。 4. 可视化开发 整个平台贯彻可视化开发原则,平台首页任意模块都可以手动编辑,可视化报表开发更是简单,平台内部选好模板和布局,连接好数据库,做好SQL就行了。 5. 跨多端开发 Learun是PC和APP一体化开发平台,而APP有安卓、iOS、H5的区别,各大平台又有各自的小程序系统,learunAPP基于uni-app框架,一套代码可运行所有平台

基于 abp vNext 和 .NET Core 开发博客项目

给你一囗甜甜゛ 提交于 2020-08-08 11:20:47
上一篇文章( https://www.cnblogs.com/meowv/p/12913676.html )我们用Code-First的方式创建了博客所需的实体类,生成了数据库表,完成了对EF Core的封装。 本篇说一下自定义仓储的实现方式,其实在abp框架中已经默认给我们实现了默认的通用(泛型)仓储, IRepository<TEntity, TKey> ,有着标准的CRUD操作,可以看: https://docs.abp.io/zh-Hans/abp/latest/Repositories 学习更多。 之所以实现自定义仓储,是因为abp没有给我们实现批量插入、更新的方法,这个是需要自己去扩展的。 既然是自定义仓储,那么就有了很高的自由度,我们可以任意发挥,可以接入第三方批量处理数据的库,可以接入Dapper操作等等,在这里贴一下微软官方推荐的一些EF Core的工具和扩展: https://docs.microsoft.com/zh-cn/ef/core/extensions/ 。 自定义仓储 在 .Domain 领域层中创建仓储接口, IPostRepository 、 ICategoryRepository 、 ITagRepository 、 IPostTagRepository 、 IFriendLinkRepository ,这里直接全部继承 IRepository