I have a ConfigurationDbContext
that I am trying to use. It has multiple parameters, DbContextOptions
and ConfigurationStoreOptions
.
How can I add this DbContext to my services in ASP.NET Core?
I have attempted the following in my Startup.cs:
ConfigureServices
....
services.AddDbContext<ConfigurationDbContext>(BuildDbContext(connString));
....
private ConfigurationDbContext BuildDbContext(string connString)
{
var builder = new DbContextOptionsBuilder<ConfigurationDbContext>();
builder.UseSqlServer(connString);
var options = builder.Options;
return new ConfigurationDbContext(options, new ConfigurationStoreOptions());
}
AddDbContext
implementation just registers the context itself and its common dependencies in DI.
Instead of AddDbContext
call, it's perfectly legal to manually register your DbContext:
services.AddTransient<FooContext>();
Moreover, you could use a factory method to pass parameters (this is answering the question):
services.AddTransient<FooContext>(provider =>
{
//resolve another classes from DI
var anyOtherClass = provider.GetService<AnyOtherClass>();
//pass any parameters
return new FooContext(foo, bar);
});
P.S., In general, you don't have to register DbContextOptionsFactory
and default DbContextOptions
to resolve DbContext itself, but it could be necessary in specific cases.
You can use this in startup.cs.
Detail information : https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext
Detail Example : Getting started with ASP.NET Core MVC and Entity Framework Core
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<ApplicationDbContext>(options =>options.
UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}