首页 > 解决方案 > 通过 API 设置文件连接到 Oracle 数据库

问题描述

我正在尝试学习 API,因为我们有一个商业案例。在大多数情况下,我可以从我们的 Oracle 数据库中读取和序列化/反序列化数据 - 但是,为了连接到数据库,我在页面顶部对 connectionString 变量进行硬编码,例如

con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=my.oracle.host)(PORT=9999)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myOracleService)));User Id=XXXXXX;Password=XXXXXX; ");

我创建了 OracleSettingsDB.cs 文件,如下所示

public class OracleDbSettings{

        public string Host{get;set;}

        public string Port{get;set;}

        public string User{get;set;}

        public string Password{get;set;}

        public string Service{get;set;}

        public string ConnectionString{

            get
            {
                return $"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={Host})(PORT={Port})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={Service})));User Id={User};Password={Password};";

            }
        }
    }
}

然后将值添加到 appsettings.json

"AllowedHosts": "*",
  "OracleDbSettings": {
      "Host": "my.oracle.host",
      "Port":"9999",
      "User": "XXXXX",
      "Service":"myOracleService",
      "Password": "XXXXXX"  //Yes I know I shouldnt store this here
  }```

I added the connectionString into the Startup.cs

``` var connectionString = Configuration.GetSection(nameof(OracleDbSettings)).Get<OracleDbSettings>();

但是我现在没有得到的是我如何在存储库文件中引用 connectionString 以便我可以调用

using (OracleConnection con = new OracleConnection(ConnectionString)

希望有人能指出我正确的方向,因为我在 Youtube 上观看的所有视频或我发现的页面都只是引用了硬编码的数据源——我们不想这样做。

谢谢,希望那里有足够的信息=]

标签: oracleasp.net-coreasp.net-core-webapi.net-5

解决方案


恐怕您需要将appsettings.json文件中的值绑定到您的OracleDbSettings模型,并且我找到了有关如何连接到与您的匹配的 oracle 的类似文档using (OracleConnection con = new OracleConnection(ConnectionString),因此我在此处提供教程来解决您的要求。这是我的测试细节:

我新创建了一个 asp.net core 5 mvc 项目并创建了一个像你这样的模型:

namespace WebMvcApp.Models
{
    public class OracleDbSettings
    {
        public const string keyword = "OracleDbSettings";
        public string Host { get; set; }
        public string Port { get; set; }
        public string User { get; set; }
        public string Password { get; set; }
        public string Service { get; set; }
        public string ConnectionString
        {
            get
            {
                return $"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={Host})(PORT={Port})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={Service})));User Id={User};Password={Password};";
            }
        }
    }
}

修改 startup.cs 文件-> 配置方法,并添加这些行代码:

var dbSettings = new OracleDbSettings();
Configuration.GetSection(OracleDbSettings.keyword).Bind(dbSettings);
var connect_string = dbSettings.ConnectionString;

我的 appsettings.json 看起来像这样:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "OracleDbSettings": {
    "Host": "my.oracle.host",
    "Port": "9999",
    "User": "XXXXX",
    "Service": "myOracleService",
    "Password": "XXXXXX"
  }
}

在此处输入图像描述


推荐阅读