C#开源、简单易用的Dapper扩展类库 - Dommel

项目特性

  • Dommel 使用 IDbConnection 接口上的扩展方法为 CRUD 操作提供了便捷的 API。

  • Dommel 能够根据你的 POCO 实体自动生成相应的 SQL 查询语句。这大大减少了手动编写 SQL 代码的工作量,并提高了代码的可读性和可维护性。

  • Dommel 支持 LINQ 表达式,这些表达式会被翻译成 SQL 表达式并执行。这使得开发者能够使用更高级、更灵活的查询语法。

  • Dommel 使用 Dapper 作为底层库来执行查询和对象映射。

Dapper

Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。

项目源代码

项目使用

以下是Dommel的简单的CRUD操作,更多实用且复杂操作可以前往项目源码地址查看(文末附带项目源码地址)。

安装Dommel包

定义Product实体类

复制代码
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int InStock { get; set; }
    public DateTime Created { get; set; }
}

数据新增

复制代码
var product = new Product { Name = "Awesome bike", InStock = 4 };
var id = await connection.InsertAsync(product);

数据删除

复制代码
var product = await connection.GetAsync<Product>(1);
await connection.DeleteAsync(product);

数据修改

复制代码
var product = await connection.GetAsync<Product>(1);
product.Name = "New name";
await connection.UpdateAsync(product);

数据查询

复制代码
var product = await connection.GetAsync<Product>(1);
var products1 = await connection.GetAllAsync<Product>();
var products2 = await connection.SelectAsync<Product>(p => p.Name == "Awesome bike" && p.Created < new DateTime(2014, 12, 31) && p.InStock > 5);
var products3 = await connection.SelectAsync<Product>(p => p.Name.Contains("bike"));
var products4 = await connection.SelectAsync<Product>(p => p.Name.StartsWith("bike"));
var products5 = await connection.SelectAsync<Product>(p => p.Name.EndsWith("bike"));

文章转载自: 追逐时光者

原文链接: https://www.cnblogs.com/Can-daydayup/p/18317443

体验地址: 引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关推荐
个 人 练 习 生2 分钟前
C++中的内存管理
开发语言·c++·经验分享·学习
浅安的邂逅15 分钟前
260926-OpenAI 急停最强模型训练:智能体借 DNS 漏洞联网,还泄露了 GitHub token
人工智能·chatgpt·开源·openai·ai日报
jingli928 分钟前
本地向量库索引把 C 盘塞爆 48.6G:一次 LanceDB 膨胀排查与根治实录
c语言·开发语言
淡海水29 分钟前
00-Unity和C#的GC剖析与对比-全篇导览
unity·c#·游戏引擎·gc
言乐629 分钟前
Python排名统计折线图
开发语言·python·django·virtualenv·pygame
我是小白呀1 小时前
19-Temporal项目实战:将客户开通流程迁移到持久执行架构
java·开发语言·人工智能·架构·workflow
励志不掉头发的内向程序员1 小时前
【从零写一个CAD 02】画完第一条线之后:实体容器、Esc 取消,和按了没反应的键盘
开发语言·c++·qt·学习·系统架构
摇滚侠1 小时前
《On Java 中文版 基础卷》阅读笔记 安装 Java 和本书示例 02
java·开发语言·笔记
fogota1 小时前
C# `string.Join` 处理 `List<int>`
windows·c#
江湖有缘1 小时前
3款开源日记工具整理合集,可Docker一键部署!
docker·容器·开源