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

前言

今天大姚给大家分享一个C#开源(MIT License)、免费、简单易用的Dapper扩展类库,帮助.NET开发者使用Dapper的CRUD操作变得更简单: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"));

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

值得推荐的.NET ORM框架

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

相关推荐
追逐时光者7 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
【.net】·【c#】·【.net core】·【技术前沿周刊】
追逐时光者1 天前
Git Extensions:一个.NET开源的 Git 图形用户界面(GUI)工具
【.net】·【c#】·【开源项目】·【git】
追逐时光者2 天前
有哪些让你「 爽到爆炸 」的 Windows 软件?
【.net】·【c#】·【开源项目】·【实用工具】·【.net core】
追逐时光者5 天前
一个开源、跨平台的.NET UI框架 - Avalonia UI
【.net】·【开源项目】·【avalonia】
追逐时光者6 天前
C#设计模式入门实战教程
【.net】·【c#】·【开源项目】·【.net core】·【面试指南】
追逐时光者7 天前
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
【.net】·【c#】·【.net core】·【技术前沿周刊】
追逐时光者10 天前
NSmartProxy:一款.NET开源、跨平台的内网穿透工具
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者12 天前
一个.NET开源、免费的跨平台物联网网关
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者14 天前
基于Material Design风格开源的Avalonia UI控件库
【.net】·【开源项目】·【avalonia】
追逐时光者15 天前
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
【.net】·【c#】·【开源项目】·【.net core】·【技术前沿周刊】