gpt4 book ai didi

c# - 在 .net 核心中配置依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-05 02:11:43 28 4
gpt4 key购买 nike

我正在尝试通过在 .net 核心项目的类中获取配置来注入(inject)依赖项。我试图注入(inject)依赖项的类在另一个项目中。但不知何故,我无法从注入(inject)依赖项的配置文件中获取值。下面是我的代码

在下面的 DBContext 中,我需要从配置中获取值,我在其中使用了 DBConfiguration 类的 DI。

public class DBContext : DbContext
{
private readonly DBConfiguration _dBConfiguration;

public DBContext(DBConfiguration dBConfiguration)
{
_dBConfiguration = dBConfiguration;
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_dBConfiguration.ConnectionString);
base.OnConfiguring(optionsBuilder);
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}

还有我在 web api 中的 StartUp.cs 文件

public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<DBConfiguration>();

services.AddEntityFrameworkSqlServer().AddDbContext<DBContext>();

services.AddOptions();

services.Configure<DBConfiguration>(Configuration.GetSection("DBConfiguration"));

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

和我的 appsettings.json 文件

{
"DBConfiguration": {


"ConnectionString": "Server=myserver;Database=BaseProjectDB;Trusted_Connection=True;MultipleActiveResultSets=true",
"ApplicationName": "WebAPI"


},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}

在此感谢任何帮助!

最佳答案

您似乎在 StartUp 文件中使用了 DBConfigurationOptions,而您在 DBContext 中注入(inject)了 DBConfiguration。

这是我目前使用配置的方式:

public class Startup
{
private readonly IConfiguration _configuration;

public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();

_configuration = builder.Build();
}

public void ConfigureServices(IServiceCollection services)
{
services.Configure<DBConfigurationOptions>(_configuration.GetSection("DBConfiguration"));
}
}

然后它被注入(inject)为:

public class DBContext : DbContext
{
private readonly DBConfigurationOptions _dBConfiguration;

public DBContext(IOptions<DBConfigurationOptions> dBConfiguration)
{
_dBConfiguration = dBConfiguration.Value;
}
}

关于c# - 在 .net 核心中配置依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57072586/

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