Аргумент, соответствующий требуемому формальному параметру контекста GenericRepository, не приводится.GenericRepository(DbContext можно)

Я получаю это сообщение об ошибке, которое при попытке наследовать от моего GenericRepository. Ошибка говорит, что мне нужно также предоставить контекст, но я не уверен, как?

//IncidentRepository 
public class IncidentRepository : GenericRepository<Incident>

//Generic Repository (to inherit from)
public class GenericRepository<TEntity> where TEntity : class
{
internal db_SLee_FYPContext context;
internal DbSet<TEntity> dbSet;

public GenericRepository(db_SLee_FYPContext context)
{
    this.context = context;
    this.dbSet = context.Set<TEntity>();
}

EDIT:

просто чтобы проверить, что я понял это?

  public class IncidentRepository: GenericRepository<Incident>
  {

    public IncidentRepository(db_SLee_FYPContext context)
    {
        this.context = context;
    }

    //Then in my genric repository
    public GenericRepository()
    {

    }

1 ответов


ошибка говорит вам, что вы не вызываете соответствующий базовый конструктор. Конструктор в производном классе ...

public IncidentRepository(db_SLee_FYPContext context)
{
    this.context = context;
}

... на самом деле делает это:

public IncidentRepository(db_SLee_FYPContext context)
    : base()
{
    this.context = context;
}

но нет конструктора базы без параметров.

вы должны исправить это, вызвав соответствующий базовый конструктор:

public IncidentRepository(db_SLee_FYPContext context)
    : base(context)
{ }

В C# 6 Вы получаете это сообщение, если в базовом типе есть только один конструктор, поэтому он дает вам наилучшую подсказку, какой аргумент в отсутствует базовый конструктор. В C# 5, сообщение будет просто

GenericRepository не содержит конструктор, который принимает 0 аргументов