亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

插入批量記錄。也許使用 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 關注
  • 131 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號