我有一个按钮,表中包含用户列表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);
}
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消