推荐一个Dapper扩展CRUD基本操作的开源库

简介: 推荐一个Dapper扩展CRUD基本操作的开源库

更多开源项目请查看:一个专注推荐.Net开源项目的榜单


在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);


项目地址

https://github.com/tmsmith/Dapper-Extensions

- End -


推荐阅读


一个简单、功能完整的WMS仓库管理系统


年度盘点10个最受欢迎的.Net开源项目


推荐一个跨平台支持Word, Excel, CSV, Email等30多种格式的操作库


一个.Net简单、易用的配置文件操作库


一个专注推荐.Net开源项目的榜单

相关文章
|
6月前
|
关系型数据库 分布式数据库 数据库
一库多能:阿里云PolarDB三大引擎、四种输出形态,覆盖企业数据库全场景
PolarDB是阿里云自研的新一代云原生数据库,提供极致弹性、高性能和海量存储。它包含三个版本:PolarDB-M(兼容MySQL)、PolarDB-PG(兼容PostgreSQL及Oracle语法)和PolarDB-X(分布式数据库)。支持公有云、专有云、DBStack及轻量版等多种形态,满足不同场景需求。2021年,PolarDB-PG与PolarDB-X开源,内核与商业版一致,推动国产数据库生态发展,同时兼容主流国产操作系统与芯片,获得权威安全认证。
|
5月前
|
关系型数据库 MySQL 数据库
MyEMS开源系统安装之数据库
本文详细讲解MyEMS的安装步骤,重点介绍数据库架构与脚本部署。MyEMS支持MySQL 8.0、MariaDB 10.5及SingleStore 7.0等数据库服务器。通过命令行或客户端工具执行SQL脚本完成安装,包括多个数据库(如myems_billing_db、myems_energy_db等)。此外,提供解决常见问题的方法,如“用户拒绝访问”、“COLLATE设置”和“MAX_ALLOWED_PACKET错误”。注意,不建议在生产环境中将数据库安装于Docker容器内。
144 1
|
6月前
|
人工智能 运维 关系型数据库
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
8月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
516 2
|
8月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
393 3
|
8月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
396 1
|
8月前
|
存储 容灾 关系型数据库
PolarDB开源数据库进阶课11 激活容灾(Standby)节点
本文介绍了如何激活PolarDB容灾(Standby)节点,实验环境依赖于Docker容器中用loop设备模拟共享存储。通过`pg_ctl promote`命令可以将Standby节点提升为主节点,使其能够接收读写请求。激活后,原Standby节点不能再成为PolarDB集群的Standby节点。建议删除对应的复制槽位以避免WAL文件堆积。相关操作和配置请参考系列文章及视频教程。
158 1
|
2月前
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。
|
6月前
|
SQL 人工智能 数据可视化
16.1k star! 只需要DDL就能一键生成数据库关系图!开源神器ChartDB让你的数据结构"看得见"
ChartDB是一款开源的数据库可视化神器,通过一句智能查询就能自动生成专业的数据库关系图。无需安装客户端、不用暴露数据库密码,打开网页就能完成从数据建模到迁移的全流程操作,堪称开发者的"数据库透视镜"。
1327 67