如何修复非泛型类中泛型方法的类型参数错误



我有一个名为Persistance的项目,在那里我安装了名为EFCore.BulkExtensions的Nuget包,用于批量插入。

我有另一个名为Application的项目,它定义了表示DBset的接口,如下所示:

应用程序项目:

public interface IDatabaseService
{
public DbSet<Employee> Employee {get;set;}

public DbSet<Department> Department {get;set;}

public void Save();

public void Insert<T>(IEnumerable<T> lists);

public int ExecuteSP(string procedureName,params object[] parameters);
}

持久性项目:

using EFCore.BulkExtensions;
public class MyDatabaseContext : DbContext,IDatabaseService
{
private readonly IConfiguration _configuration;
public MyDatabaseContext(IConfiguration configuration)
{
_configuration = configuration;
Database.EnsureCreated(); 
}
public DbSet<Employee> Employee {get;set;}

public DbSet<Department> Department {get;set;}


public void Save()
{
this.SaveChanges();
}

public void Insert<T>(IEnumerable<T> lists)
{
this.BulkInsert(lists);/error here
}
}

错误:为方法键入参数DbContextBulkExtensions.BulkInsert(DbContext,IList(不能为根据用法推断。

如何修复此问题?

  • EFCore.BulkExtensions.DbContextBulkExtensions的源代码可在GitHub上获得。
    • BulkInsert<T>方法要求实体通过IList<T>集合]1传入,而不是作为IEnumerable<T>传入
    • 此外,它们还将T约束为where T : class,因此也添加了该约束

所以更改这个:

public void Insert<T>( IEnumerable<T> lists )
{
this.BulkInsert(lists);/error here
}

到此:

public void Insert<T>( IList<T> entities )
where T : class
{
this.BulkInsert( entities: entities );
}

最新更新