首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在非泛型类中使用泛型方法修复类型参数错误?

如何在非泛型类中使用泛型方法修复类型参数错误?
EN

Stack Overflow用户
提问于 2022-10-10 19:51:52
回答 1查看 56关注 0票数 2

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

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

应用项目:

代码语言:javascript
复制
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);
}

坚持项目:

代码语言:javascript
复制
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)的类型参数。

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-10 20:26:22

  • 可在GitHub上使用
    • BulkInsert<T>方法要求实体通过IList<T>集合[1]传入,而不是以IEnumerable<T>的形式传递。
    • 此外,它们还将T约束为where T : class,因此也添加该约束。

因此,改变这一点:

代码语言:javascript
复制
public void Insert<T>( IEnumerable<T> lists )
{
    this.BulkInsert(lists);/error here
}

对此:

代码语言:javascript
复制
public void Insert<T>( IList<T> entities )
    where T : class
{
    this.BulkInsert( entities: entities );
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74020068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档