我有一个名为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)的类型参数。
我怎么才能解决这个问题?
发布于 2022-10-10 20:26:22
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 );
}https://stackoverflow.com/questions/74020068
复制相似问题