我有一個我正在嘗試使用的ConfigurationDbContext 。它有多個參數, DbContextOptionsConfigurationStoreOptions

如何將此DbContext添加到ASP.NET Core中的服務?

我在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 實現只是在DI中註冊上下文本身及其公共依賴項。而不是AddDbContext調用,手動註冊DbContext是完全合法的:

services.AddTransient<FooContext>();

此外,您可以使用工廠方法傳遞參數(這是回答問題):

services.AddTransient<FooContext>(provider =>
{
    //resolve another classes from DI
    var anyOtherClass = provider.GetService<AnyOtherClass>();

    //pass any parameters
    return new FooContext(foo, bar);
});

PS,通常,您不必註冊DbContextOptionsFactory和默認DbContextOptions來解析DbContext本身,但在特定情況下可能是必要的。


熱門答案

您可以在startup.cs中使用它。

詳細信息: https//docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext

詳細示例: ASP.NET Core MVC和Entity Framework Core入門

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddDbContext<ApplicationDbContext>(options =>options.
       UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow