为了账号安全,请及时绑定邮箱和手机立即绑定

插入批量记录。也许使用 SQL

插入批量记录。也许使用 SQL

C#
三国纷争 2023-09-24 17:19:05
我有一个按钮,表中包含用户列表ButtonUsers。Button使用用户列表更新父级,并且UserList应更新所有其他按钮。并非每次都是如此,因此每个按钮都有自己的列表。问题是我可能有 5000 个按钮,每个按钮都应该更新。我尝试一次拉动所有按钮,然后拉动必要的用户,并将每个按钮状态设置为已修改。当我迭代完所有按钮后,调用SaveChanges().public bool UpdatePreviousButtons(Button button, List<string> userList){   var buttons = fieldRepo.GetFieldsCreatedFrom<Button>(button.ID);   var users = fieldRepo.GetUsersFromIDs(userList);   foreach(var btn in buttons)   {      btn.UserList = users;      fieldRepo.UpdateFieldGeneric<Button>(btn);   }   return fieldRepo.Commit();}问题似乎是它不会批量插入记录,而是每次调用插入一条记录。这不可避免地会导致超时,并且需要很长时间。我一直在考虑用 手动完成Context.Database.ExecuteSqlCommand()。使用实体框架有更好的方法吗?
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

您可以尝试 SqlBulkCopy 类:


作为如何使用它的简单示例:


var data = new DataTable();

data.Columns.Add("Name");

data.Columns.Add("Id");


for (var i = 1; i< 10_000; i++)

{

    data.Rows.Add($"Name={i+1}", i+1); 

}


using (var sqlBulk = new SqlBulkCopy(_connectionstring))

{

    sqlBulk.DestinationTableName = "People";

    sqlBulk.WriteToServer(data);

}


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信