在DbContext中获取appSettings,无依赖注入,无MVC

问题描述 投票:0回答:1

我有一个 .net core 8 应用程序。 它是一个多对象分层 DLL 架构。从上到下我的架构看起来像这样。

  • “简单”Web Rest API
  • DLL业务逻辑代码层
  • DLL 实体和 TO
  • DLL DbContext 代码层

我的 Web Rest API 不是 MVC,它使用“简单”API 方法,因此没有依赖项注入等等......至少我不知道该怎么做。

我的 DbContext 代码库位于它自己的单独 DLL 中,它使用 Web Rest API 进行编译和部署。如何读取 appsettings.json 文件以便存储我的数据库连接字符串?

在我的 appSettings.json 中,我想存储多个连接字符串,每个环境(开发、测试、生产)一个... 我还想存储一个值来指示它正在运行的环境,以便我可以提取正确的连接字符串来连接到正确的数据库。

在我的 Web api 代码库中,这是可行的,我将获得我的连接字符串。

string conStr = app.Configuration.GetConnectionString("DB_CON_DEV");

但是,我无法在我的代码库中找到与此方法等效的方法,该方法使用 DbContext 来获取连接字符串。我读了一些关于 ConfigurationManager 类的内容并尝试了这个,但它只返回 null

   ConfigurationManager cm = new ConfigurationManager();
   string conStr = cm.GetConnectionString("DB_CON_DEV");

任何帮助,我们将不胜感激!

谢谢 瑞克

entity-framework asp.net-core-webapi dbcontext
1个回答
0
投票

假设你的 appsettings.json 是这样的

{
  "Logging": {
      "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Information"
      }
  },
  "ConnectionStrings": {
      "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=CslAupClearance;MultipleActiveResultSets=true"
  }
}

然后在您的控制器中或您正在执行此操作的任何地方

使用 Microsoft.Extensions.Configuration;

public class MyClass{

        private readonly IConfiguration _config;
        
          public MyClass(IConfiguration config)
        {
            _config = config;
        }
}

然后使用它

  var connectionString = _config.GetConnectionString("DefaultConnection");
© www.soinside.com 2019 - 2024. All rights reserved.