一个C#扩展库,让Dapper的CRUD操作更简单

使用DDD从零构建一个完整的系统

在.Net中,EF是一个非常强大ORM库,但是对于一些复杂的查询,由于我们不能控制最终SQL的生成,变得难以优化。

这时候我们往往会引入Dapper,但是Dapper采用原生SQL语句的方式,对于CRUD这些简单操作我们一般都会自行封装,不然就会变成很繁琐。

今天给大家推荐一个Dapper的CRUD扩展库,就可以满足我们的需求,减少我们的工作量。

01

项目简介

Dommel是Dapper的简单扩展,基于POCO实现基本的CRUD,提供手动和自动多重映射、查询列表、同步异步方法,同时支持LINQ等功能。

02

使用方法

1、NuGet 安装 Dommel

Install-Package Dommel

2、定义实体

public class Person  
{  
    public int Id { get; set; }  
    public string Name { get; set; }  
    public int Age { get; set; }  
}

3、 CRUD操作

// 创建记录 
var person = new Person { Name = "John", Age = 30 };  
var id = await connection.InsertAsync(person);


// 读取记录  
var result = await  connection.GetAsync<Person>(1);
Console.WriteLine($"Name: {result.Name}, Age: {result.Age}");  


// 更新记录  
result.Age = 25;  
await connection.UpdateAsync(result);  


// 删除记录  
await connection.DeleteAsync(person);

03

项目地址

https://github.com/henkmollema/Dommel

觉得好看 点个在看👇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
博文地址: https://www.cnblogs.com/cl-blogs/p/10219126.html 简单栗子: [Test] public void 三表联表分页测试() { LockPers lpmodel = new LockPers() { Name = "%蛋蛋%", IsDel = false}; Users umodel = new Users() { UserName = "jiaojiao" }; SynNote snmodel = new SynNote() { Name = "%木头%" }; Expression<Func<LockPers, Users, SynNote, bool>> where = PredicateBuilder.WhereStart<LockPers, Users, SynNote>(); where = where.And((lpw, uw, sn) => lpw.Name.Contains(lpmodel.Name)); where = where.And((lpw, uw, sn) => lpw.IsDel == lpmodel.IsDel); where = where.And((lpw, uw, sn) => uw.UserName == umodel.UserName); where = where.And((lpw, uw, sn) => sn.Name.Contains(snmodel.Name)); DapperSqlMaker<LockPers, Users, SynNote> query = LockDapperUtilsqlite<LockPers, Users, SynNote> .Selec() .Column((lp, u, s) => // null) //查询所有字段 new { lp.Id, lp.InsertTime, lp.EditCount, lp.IsDel, u.UserName, s.Content, s.Name }) .FromJoin(JoinType.Left, (lpp, uu, snn) => uu.Id == lpp.UserId , JoinType.Inner, (lpp, uu, snn) => uu.Id == snn.UserId) .Where(where) .Order((lp, w, sn) => new { lp.EditCount, lp.Name, sn.Content }); var result = query.ExcuteSelect(); //1. 执行查询 WriteJson(result); // 打印查询结果 Tuple<StringBuilder, DynamicParameters> resultsqlparams = query.RawSqlParams(); WriteSqlParams(resultsqlparams); // 打印生成sql和参数 int page = 2, rows = 3, records; var result2 = query.LoadPagelt(page, rows, out records); //2. 分页查询 WriteJson(result2); // 查询结果 }
C#中使用Dapper进行事务批量操作,可以按照以下步骤进行: 1. 开启事务:使用Dapper的Transaction属性可以开启事务。 ``` using (var cn = new SqlConnection(connectionString)) { cn.Open(); using (var transaction = cn.BeginTransaction()) { try { // 执行批量操作 transaction.Commit(); } catch { transaction.Rollback(); throw; } } } ``` 2. 执行批量操作:使用Dapper的Execute方法可以执行批量操作。 ``` using (var cn = new SqlConnection(connectionString)) { cn.Open(); using (var transaction = cn.BeginTransaction()) { try { string sql = "INSERT INTO MyTable (Column1, Column2) VALUES (@Column1, @Column2)"; List<MyData> data = new List<MyData>(); // 添加数据到data列表中 cn.Execute(sql, data, transaction); transaction.Commit(); } catch { transaction.Rollback(); throw; } } } ``` 其中,MyData是一个自定义的数据模型,包含要插入到数据中的数据。 3. 使用SqlBulkCopy进行批量操作Dapper也支持使用SqlBulkCopy进行批量操作,可以提高批量操作的效率。 ``` using (var cn = new SqlConnection(connectionString)) { cn.Open(); using (var transaction = cn.BeginTransaction()) { try { using (var bulkCopy = new SqlBulkCopy(cn, SqlBulkCopyOptions.Default, transaction)) { bulkCopy.DestinationTableName = "MyTable"; DataTable table = new DataTable(); // 添加数据到table中 bulkCopy.WriteToServer(table); } transaction.Commit(); } catch { transaction.Rollback(); throw; } } } ``` 以上就是使用Dapper进行事务批量操作的基本步骤。需要注意的是,批量操作可能会影响数据性能,应该在适当的时候进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值