gpt4 book ai didi

.net - 尝试激活 'DatabaseConfiguration' 时无法解析类型 'MyDbContext' 的服务

转载 作者:行者123 更新时间:2023-12-04 22:44:50 25 4
gpt4 key购买 nike

我在 ASP.NET MVC Beta 6 中使用依赖注入(inject)时遇到问题。在 Startup.ConfigureServices 方法中,我注册了类 DatabaseConfiguration 和 MyDbContext。项目启动时,我收到以下错误:

Unable to resolve service for type 'DatabaseConfiguration' while attempting to activate 'MyDbContext'.

我不确定为什么无法解析类型 DatabaseConfiguration。据我所知,它已正确注册。

我错过了什么?
// ASP.NET 5 Beta 6 Project 
public void ConfigureServices(IServiceCollection services) {
services.Configure<DatabaseConfiguration>(appSettings => ConfigurationBinder.Bind(appSettings, this.Configuration.GetConfigurationSection(nameof(DatabaseConfiguration))));

services.AddTransient<MyDbContext>();

services.AddMvc();
}

public class ValuesController : Controller {
public ValuesController(MintoDbContext tenantRepo) { // ... }

// ...
}

// The following classes are in a Class Libary.
public class MyDbContext : DbContext {
public MyDbContext(DatabaseConfiguration databaseConfiguration) { // ... }
}

public class DatabaseConfiguration {
public string ConnectionString { get; set; }
}

最佳答案

你的 config.json 应该是这样的:

{
"DatabaseConfiguration": {
"ConnectionString": "yourconnectionstringhere"
}
}

那么你的 DI 代码应该是这样的:
services.Configure<DatabaseConfiguration>(configuration.GetConfigurationSection("DatabaseConfiguration"));

但你真正得到的是
IOptions<DatabaseConfiguration> 

所以你需要改变你的 DBContext 的构造函数来接收它

然后在你的 DBContext 中,你会得到如下的连接字符串:
string connectionString = databaseConfiguration.Options.ConnectionString;

或者您可以获取 DatabaseConfiguration 的实例,例如
DatabaseConfiguration dbConfig = databaseConfiguration.Options;

关于.net - 尝试激活 'DatabaseConfiguration' 时无法解析类型 'MyDbContext' 的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com