I had an odd error popup on my when building a website recently in ASP.Net Core 1.0 using EF core 1.0. It happened when I deleted an OnConfiguring method that I thought I no longer needed.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)        {	// I had my connection string being set up here	optionsBuilder.UseSqlServer("mycoonection string was here");        }

I got the error: InvalidOperationException: No database provider has been configured for this DbContext. Which confused me because I was inserting the connection string when I established the database in my startup.cs file.

services.AddDbContext(options => options.UseSqlServer(connection)); 

Trying to dig into the issue further I also deleted a default constructor that I had because I reasoned, why should I have a default constructor when I only initialise the context with dependency injection which doesn’t use the default constructor. I deleted it in case this was the issue. I then got this error:

ArgumentException: Context does not have a default constructor.

How weird. What the hell is constructing this method. I dug into the stack trace but it was full of system calls that I didn’t recognise, but it looked like it was being initialized by something outside the code I’d written.

After 20 or so minutes I found the error. For some reason a few commits previous I had mistakenly added the Context Object to the Signature of my Index controller. It shouldn’t have been passed in In fact I should have been referencing the context object on the Controller class.

public IActionResult Index(PersonalSiteContext context){        var overview = Services.Content.FetchOverview(context);        return View(overview);           }

So I corrected it and my bug went away.

public IActionResult Index(){        var overview = Services.Content.FetchOverview(this.context);        return View(overview);           }

Lastly I added my dependency injection where it should have been, the class Constructor:

private IMemoryCache memoryCache;private PersonalSiteContext context;public HomeController(IMemoryCache memoryCache, PersonalSiteContext context) {        this.memoryCache = memoryCache;        this.context = context;}

Hope this ends up helping someone.