如何在ASP.NET Boilerplate中使用EFCore.BulkExtensions



我需要在ASP.NET Boilerplate中进行大容量插入,并且在阅读后尝试实现EFCore.BulkExtensionshttps://github.com/aspnetboilerplate/aspnetboilerplate/issues/4397。

我在项目中安装了nuget的最新EFCore.BulkExtensions,并尝试使用下面的doContext,以便在需要的地方使用。

public class MyQueryExecutor : IMyQueryExecutor, ITransientDependency
{
private readonly IDbContextProvider<ModCoreDbContext> _dbContextProvider;
public MyQueryExecutor(IDbContextProvider<ModCoreDbContext> dbContextProvider)
{
_dbContextProvider = dbContextProvider;
}
public void BulkImport<T>(IList<T> entities) where T : class
{
_dbContextProvider.GetDbContext().BulkInsert(entities);
}
}
public interface IMyQueryExecutor
{
void BulkImport<T>(IList<T> entities) where T : class;
}

我在所需的项目中引用了EFCore.BulkExtensions,当我试图运行该项目时,在Startup.cs 中执行时遇到了一个错误

app.UseAbp(); //Initializes ABP framework.

错误:

TypeLoadException: Could not load type 'Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource' from assembly 'Microsoft.EntityFrameworkCore, Version=3.1.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

作为样板框架一部分的实际Microsoft.EntityFrameworkCore是2.2.4

DbContext context = CurrentUnitOfWork.GetDbContext<DbContext>();
await context.Users.AddRangeAsync(createdUsers);
await CurrentUnitOfWork.SaveChangesAsync();

我需要下载较低版本的EFCore.BulkExtensions(2.4.7(nuget,因为最新版本不支持EF 2.2.4

如果您正在寻找IRepository类的扩展方法。你可以看看abp自己实现的EFPLus

Abp.EntityFrameworkCore.EFPlus

对于SqlBulk,这将转化为类似的内容

public static class RepositoryBulkExtensions
{
public static async Task BulkInsertAsync<TEntity, TPrimaryKey>(
this IRepository<TEntity, TPrimaryKey> repository,
List<TEntity> entities,
BulkConfig config = null,
Action<decimal> progress = null)
where TEntity : Entity<TPrimaryKey>
{
Check.NotNull(repository, nameof(repository));

var context = repository.GetDbContext();
await context.BulkInsertAsync(entities, config, progress);            
}        
}

相关内容

  • 没有找到相关文章

最新更新