Dapper 多插入返回插入的对象

sqlserver

1个回答

写回答

ml8021@163.com

2025-09-07 07:50

+ 关注

使用Dapper多插入返回插入的对象

Dapper是一个轻量级的ORM(对象关系映射)工具,广泛应用于.NET开发中。它提供了快速、简单和高效的数据库访问方式,尤其擅长处理大量数据的读写操作。在实际开发中,我们经常需要一次性插入多条数据到数据库中,并且希望能够获取插入后的对象。本文将介绍如何使用Dapper实现多插入并返回插入的对象。

多插入并返回插入的对象的实现

在Dapper中,我们可以使用批量插入的方式来实现多插入的操作。Dapper提供了扩展方法Insert,可以将一个对象集合插入到数据库中。下面是一个示例代码:

csharp

public IEnumerable<T> Insert<T>(IEnumerable<T> entities)

{

using (var connection = new SqlConnection(connectionString))

{

connection.Open();

using (var transaction = connection.BeginTransaction())

{

try

{

foreach (var entity in entities)

{

connection.Insert(entity, transaction);

}

transaction.Commit();

}

catch (Exception)

{

transaction.Rollback();

throw;

}

}

}

return entities;

}

在上述代码中,我们首先创建了一个SqlConnection对象,然后通过Open方法打开数据库连接。接着,我们创建了一个事务对象transaction,这是为了保证多条插入语句的原子性操作。然后,我们使用foreach循环遍历传入的对象集合entities,并通过connection.Insert方法将每个对象插入到数据库中。最后,我们通过transaction.Commit方法提交事务,如果出现异常则使用transaction.Rollback方法回滚事务。

案例代码

为了更好地理解上述的多插入并返回插入的对象的实现,我们来看一个具体的案例。假设我们有一个名为Student的实体类,它具有以下属性:IdNameAge

csharp

public class Student

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

}

现在,我们想要一次性插入多个学生对象到数据库中,并且希望能够获取插入后的对象。我们可以使用上述的Insert方法来实现:

csharp

var students = new List<Student>

{

new Student { Name = "Alice", Age = 18 },

new Student { Name = "Bob", Age = 19 },

new Student { Name = "Charlie", Age = 20 }

};

var insertedStudents = Insert(students);

在上述代码中,我们首先创建了一个学生对象集合students,然后调用了Insert方法将这些学生对象插入到数据库中。最后,我们通过insertedStudents变量获取插入后的对象集合。

本文介绍了如何使用Dapper实现多插入并返回插入的对象。通过批量插入的方式,可以提高数据插入的效率。在实际开发中,我们经常需要一次性插入大量数据,并且需要获取插入后的对象。使用Dapper的Insert方法,可以轻松实现这一功能。希望本文对你理解Dapper的多插入操作有所帮助。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号