天天看點

【Abp VNext】實戰入門(十三):【2】領域層 —— 批量更新資料庫記錄一、前言二、批量操作資料庫記錄方案三、總結

文章目錄

  • 一、前言
  • 二、批量操作資料庫記錄方案
    • 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;

繼續閱讀