我有一個按鈕,表中包含用戶列表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 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消