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 ofAddDbContext
call, it's perfectly legal to manually register your DbContext:Moreover, you could use a factory method to pass parameters (this is answering the question):
P.S., In general, you don't have to register
DbContextOptionsFactory
and defaultDbContextOptions
to resolve DbContext itself, but it could be necessary in specific cases.You can put all your parameters of db context in a class
AppDbContextParams
and register a factory to create that object for appdbcontext:In order to register
DbContext
as a service inIServiceCollection
you have two options:(we assume that you are going to connect to a SQL Server database)Using AddDbContext<>
Using AddDbContextPool<>
as you might see these two are in terms of writing have similarities, but in fact they have some fundamental differences in terms of concepts. @GabrielLuci has a nice response about the differences between these two: https://stackoverflow.com/a/48444206/1666800
Also note that you can store your connection string inside the appsettings.json file and simply read it using:
Configuration.GetConnectionString("DefaultConnection")
inside theConfigureServices
method inStartup.cs
file.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
Try this for inject your ef context - context inheritance from IDbContext
1-Add your context to service:
2-Inject your context: