Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

There is no argument given that corresponds to the required formal parameter 'context of GenericRepository<Incident>.GenericRepository(dbContext)

I am getting this error message which when trying to inherit from my GenericRepository. The error says I need to also provide a context but I am not sure how?

//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:

Just to check I've grasped this?

  public class IncidentRepository: GenericRepository<Incident>
  {

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

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

    }
like image 472
ASPCoder1450 Avatar asked Nov 13 '15 20:11

ASPCoder1450


1 Answers

The error tells you that you don't call an appropriate base constructor. The constructor in the derived class ...

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

... is in fact doing this:

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

But there is no parameterless base constructor.

You should fix this by calling the matching base constructor:

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

In C# 6 you get this message if there is only one constructor in the base type, so it gives you the best possible hint which argument in the base constructor is missing. In C# 5 the message would simply be

GenericRepository does not contain a constructor that takes 0 arguments

like image 87
Gert Arnold Avatar answered Oct 24 '22 03:10

Gert Arnold