文章目錄
- 一、前言
- 二、批量操作資料庫記錄方案
-
- 1、添加開源插件:
- 2、批量更新記錄Index:
- 三、總結
一、前言
EntityFrameWork 中沒有批量操作資料庫的方法,如:批量更新、批量删除等…
可以通過DbContext來執行Sql語句,不是特别優雅和推薦;
優雅的方式當然是使用開源的現成輪子…
二、批量操作資料庫記錄方案
1、添加開源插件:
nuget 搜尋添加 Z.EntityFramework.Plus
2、批量更新記錄Index:
/// <summary>
/// 找到指定Id記錄,後面記錄Index自動批量+1
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task IndexIncreaseAfterIdAsync(int id)
{
var tmpEntity = this.DbContext.PresetCruise_Points.FirstOrDefault(p => p.Id == id);
if (tmpEntity == null)
{
return;
}
//擴充方法 條件:比tmpEntity.Index 大的記錄
await this.DbContext.PresetCruise_Points.Where(p => p.Index > tmpEntity.Index)
//批量執行:Index=Index+1;
.UpdateAsync(p => new PresetCruise_Points() { Index = p.Index + 1 });
}
三、總結
難者不會,會了就不難了;
Z.EntityFramework.Plus基礎功能免費,進階功能收費;
還有一個開源插件EFCore.BulkExtensions 不過目前暫時不支援MySql,隻支援 Sqlite 和 MsSql;