ABP 框架集成EF批量增加、删除、修改只针对使用mmsql的

时间:2023-03-08 17:25:04

AppService 层使用nuget 添加 EFCore.BulkExtensions 引用

 using Abp.Application.Services.Dto;
using Abp.Domain.Repositories;
using Abp.EntityFrameworkCore.Repositories;
using Abp.UI;
using EFCore.BulkExtensions;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebProject.Authorization.Accounts; namespace WebProject.Article
{
public class ArticleAppService : WebProjectAppServiceBase, IArticleAppService
{
private readonly IRepository<Models.Article> _articleRepository;
public ArticleAppService(IRepository<Models.Article> articleRepository)
{
_articleRepository = articleRepository;
}
/// <summary>
/// 批量添加
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public string BulkInsert(EntityDto input)
{
Stopwatch watch = new Stopwatch();
watch.Start();
List<Models.Article> list = new List<Models.Article>();
for (int i = ; i < input.Id; i++)
{
var entity = new Models.Article();
entity.CateId = ;
entity.Title = $"BulkInsert娱乐{1}";
list.Add(entity);
} _articleRepository.GetDbContext().BulkInsert(list);//GetDbContext 需要添加Abp.EntityFrameworkCore.Repositories引用
watch.Stop(); string time = watch.ElapsedMilliseconds.ToString();
return time;
}
/// <summary>
/// 批量删除
/// </summary>
/// <returns></returns>
public string BulkDelete()
{
Stopwatch watch = new Stopwatch();
watch.Start();
_articleRepository.GetAll().BatchDelete();
//_articleRepository.GetAll().Where(m=>m.Id>100).BatchDelete();
watch.Stop();
string time = watch.ElapsedMilliseconds.ToString();
return time;
}
/// <summary>
/// 批量修改
/// </summary>
/// <returns></returns>
public string BatchUpdate()
{
Stopwatch watch = new Stopwatch();
watch.Start();
_articleRepository.GetAll().BatchUpdate(new Models.Article { Title = "Updated娱乐" });
//_articleRepository.GetAll().Where(m=>m.Id>100).BatchUpdate(new Models.Article { Title = "Updated娱乐" });
watch.Stop();
string time = watch.ElapsedMilliseconds.ToString();
return time;
} }
}