📅  最后修改于: 2023-12-03 15:07:39.092000             🧑  作者: Mango
在应用程序中,我们需要经常地与数据库交互,其中一个重要的操作就是向数据库中插入记录。当需要插入多条记录时,我们往往希望一次性提交所有的数据,而不是逐个提交。
本文将介绍如何在 Entity Framework Core 中一次性向数据库中插入多条记录。
Entity Framework Core 提供了一个批量插入数据的方法 AddRange。该方法可以一次性向数据库中插入多条记录,从而避免了多次向数据库发出插入请求的问题。
List<Customer> customers = new List<Customer>
{
new Customer { Name = "John Doe", Age = 30},
new Customer { Name = "Jane Doe", Age = 28},
};
using (var db = new MyDbContext())
{
db.Customers.AddRange(customers);
db.SaveChanges();
}
在上面的代码中,我们创建了一个包含两条记录的 List
除了使用 AddRange 方法,我们还可以直接执行 SQL 命令。下面的代码演示了如何使用 Entity Framework Core 执行批量插入操作。
using (var db = new MyDbContext())
{
using (var transaction = db.Database.BeginTransaction())
{
var sql = "INSERT INTO Customers (Name, Age) VALUES ";
var customers = new List<Customer>
{
new Customer { Name = "John Doe", Age = 30 },
new Customer { Name = "Jane Doe", Age = 28 },
};
var values = new List<string>();
foreach (var customer in customers)
{
values.Add($"('{customer.Name}', {customer.Age})");
}
sql += string.Join(",", values);
db.Database.ExecuteSqlCommand(sql);
transaction.Commit();
}
}
在上面的代码中,我们使用 BeginTransaction 方法启动一个事务。然后,我们使用 StringBuilder 生成插入语句,并调用 ExecuteSqlCommand 方法执行 SQL 命令。最后,我们提交事务,将所有更改保存到数据库中。
本文介绍了在 Entity Framework Core 中一次性向数据库中插入多条记录的两种方法:使用 AddRange 方法和执行 SQL 命令。虽然 AddRange 方法简单易用,但它不支持所有的数据类型;而直接执行 SQL 命令则需要更多的代码,但却更加灵活。具体如何选择取决于你的具体场景。