Unable to resolve service for type while attempting to activate

We are getting this error in Entity frame work core database first approach. I followed below steps and error got resolved

Step 1: Check Your context class constructor should be like this

public partial class ZPHSContext : DbContext
{
    public ZPHSContext(DbContextOptions<ZPHSContext> dbContextOptions)
        : base(dbContextOptions)
    {
    }
}
    

Step 2: In Startup file

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddDbContext<ZPHSContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("BloggingDatabase")));
}
    

Step 3: Connection string in appsettings

"ConnectionStrings": {
    "BloggingDatabase": "Server=****;Database=ZPHSS;Trusted_Connection=True;"
}

Step 4: Remove default code in OnConfiguring method in context class

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}

Other answers are CORRECT, however I was spinning up a new asp.net core 2.1.x project and got this error.

Ended up being a typo by ME.

So in my Controller instead of Correctly using the Interface like this

public HomeController(IApplicationRepository applicationRepository)
{
    _applicationRepository = applicationRepository;
}

My typo had me using ApplicationRepository instead of its interface IApplicationRepository Notice below, and so with NO ERRORS spotting the missing "I" was fun :/

public HomeController(IApplicationRepository applicationRepository)
{
    _applicationRepository = applicationRepository;
}

Thus the controller was not resolving the DI...


For the Dependency Injection framework to resolve IRepository, it must first be registered with the container. For example, in ConfigureServices, add the following:

services.AddScoped<IRepository, MemoryRepository>();

For .NET 6+, which uses the new hosting model by default, add the following in Program.cs instead:

builder.Services.AddScoped<IRepository, MemoryRepository>();

AddScoped is just one example of a service lifetime:

For web applications, a scoped lifetime indicates that services are created once per client request (connection).

See the docs for more information on Dependency Injection in ASP.NET Core.