Adding DbContextOptions in Startup.cs not registering data store

asp.net-core-mvc c# dependency-injection entity-framework entity-framework-core

Question

My problem is that the below code does not register a data store during startup. This is the specific "error" statement I get in the response from the application:

An unhandled exception occurred while processing the request.

InvalidOperationException: No data stores are configured. Configure a data store by overriding OnConfiguring in your DbContext class or in the AddDbContext method when setting up services.
    Microsoft.Data.Entity.Storage.DataStoreSelector.SelectDataStore(ServiceProviderSource providerSource)

In ConfigureServices(IServiceCollection services) I am trying to specify DbContextOptions for my DbContext in a lambda. Code:

services.AddEntityFramework(Configuration)
    .AddSqlServer()
    .AddDbContext<MyDbContext>(
        options =>
        options.UseSqlServer(Configuration.Get("Data:DefaultConnection:ConnectionString"))
    );

In my DbContext, I have a constructor which sends the option to base, code:

public MyContext(DbContextOptions options) : base(options) { }

My configuration file config.json, which is read at startup, contains this connectionstring:

"Data": {
    "DefaultConnection": {
        "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=MyDbName;Trusted_Connection=True;MultipleActiveResultSets=True;"
    }
}

I have previously used

protected override void OnConfiguring(DbContextOptions options)
{
    options.UseSqlServer(Startup.Configuration.Get("Data:DefaultConnection:ConnectionString"));

}

in my DbContext successfully. It registers the data store and it works properly, but I'd rather use the lambda way.

If there is any more information needed, I'll provide it.

Popular Answer

Are you injecting your context into your controller or wherever you are using it? I discovered that if you try to new up the context instead of injecting it, it does not use the configuration specified in Startup.cs



Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why