

推荐一个Dapper扩展CRUD基本操作的开源库 - chingho
source link: https://www.cnblogs.com/chingho/p/17090697.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在C#众多ORM框架中,Dapper绝对称得上微型ORM之王,Dapper以灵活、性能好而著名,同样也是支持各种数据库,但是对于一些复杂的查询,我们写原生的SQL语句问题不大,对于CRUD基本操作,我们同样也是需要写原生的SQL来实现,这个就比较麻烦了。
今天给大家推荐一个Dapper扩展库,来实现CRUD的基本操作,可以省去这些繁琐的代码,提升开发效率。
项目简介
这个是Dapper小型扩展库,通过为POCO添加基本CRUD操作,来扩展Dapper。对于复杂的查询场景,也增加了扩展。
技术架构
1、支持:支持Net 4.6+、NetStandard 2.0、NetCore 2.0+。
项目特性
1、开箱即用,使用简单;
2、为实体自动映射获取、插入、更新和删除操作;
3、支持GetList、Count、GetPage方法;
4、支持GUID、Int类型主键,其他类型可通过自定义的方式实现;
5、通过ClassMapper实现自定义映射。
项目结构

使用方法
插入数据
//定义实体
Person p = new Person { Active = true, FirstName = "Foo", LastName = "Bar", DateCreated = DateTime.UtcNow };
//插入并返回id
var id = Db.Insert(p);
Assert.AreEqual(1, id);
获取单个实体
//根据id,获取实体
Person p2 = Db.Get<Person>(id);
Assert.AreEqual(id, p2.Id);
删除记录
//根据id,删除记录
Person p2 = Db.Get<Person>(id);Db.Delete(p2);
Assert.IsNull(Db.Get<Person>(id));
更新记录
//根据id,获取记录
var p2 = Db.Get<Person>(id);
//更改记录
p2.FirstName = "Baz";p2.Active = false;
//更新记录
Db.Update(p2);
获取记录列表
//获取所有记录
IEnumerable<Person> list = Db.GetList<Person>();
Assert.AreEqual(4, list.Count());
根据自动排序、获取指定的记录
//排序字段
IList<ISort> sort = new List<ISort> { Predicates.Sort<Person>(p => p.LastName), Predicates.Sort<Person>("FirstName") };
//获取指定的记录
IEnumerable<Person> list = Db.GetPage<Person>(null, sort, 0, 2);
Assert.AreEqual(2, list.Count());
获取过滤条件的记录总数
//字段过滤
var predicate = Predicates.Field<Person>(f => f.DateCreated, Operator.Lt, DateTime.UtcNow.AddDays(-5));
//获取总数
int count = Db.Count<Person>(predicate);
Assert.AreEqual(2, count);
项目地址
更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单
- End -
文章首发于公众号【编程乐趣】,欢迎大家关注。

Recommend
-
11
V2EX › 程序员 求推荐一个能够快速入门基本操作应用的 PHP 教程 kiduu · 3 小时 2 分钟前...
-
6
上次给大家推荐过一个缓存中间件《
-
7
今天给大家推荐一个开源项目,基于.NetCore开发的、前后端分离、前端有Vue、Angular、MVC多个版本的快速开发框架。 项目简介 这是一个基于.NetCore开发的快速开发框架,项目采用模块化架构、最新的技术栈、项目高度...
-
4
LINQ对应的中文名称是:语言集成查询,是对一系列直接将查询功能集成到C#语言技术的统称,我们最常用的场景是,用于数据库的查询功能。 在.Net中,本身对Objects也支持LINQ的扩展,但是对于一些特定的功能,就需要我们自己去扩展。 所以,今天给大家推...
-
4
【配置教程】撑起月6亿PV开源监控解决方案 上次分享过...
-
4
平常在我们电脑,我们都会安装非常多的软件,很多软件默认都会向系统注册右键菜单功能,这样方便我们快捷打开。比如图片文件,通过右键的方式,快捷选择PS软件打开。 如果我们电脑安装非常多的软件,就会导致我们右键菜单的列表非常多,但是很多软件我们是用...
-
4
今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件,可用于群聊、好友聊天、游戏直播等场景。 项目简介 这是一个基于.Net Core开发的、简单、高性能的通讯组件,支持点对点发送、群聊、在线状态的订阅...
-
2
数据结构与算法是编程的基础,虽然在项目开发中,可能用不到,但是学习数据结构与算法对编程还是非常有帮助的。但是数据结构与算法也是抽象的,对于初学者来说,也是比较费涩难懂。 所以,今天给大家推荐一个可视化动画算法网站,这是一个新...
-
7
推荐一个Github上Start超过20K的超火、好用的屏幕截图转换为 GIF 动图开源项目。 项目简介 这是基于.Net Core + WPF 开发的、开源项目,可将屏幕截图转为 GIF 动画。它的核心功能是能够简单、快速地截取整个屏幕或者...
-
6
推荐一个强大的电子表单控件,使用简单且功能强大。 项目简介 这是一个开源的表格控制组件,支持Winform、WPF和Android平台,可以方便的加载、修改和导出Excel文件,支持数据格式、大纲、公式计算、图表、脚本执行等...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK