.net core 1为1个查询添加了只读数据库连接

本文关键字:添加 只读 数据库连接 查询 1个 core net | 更新日期: 2023-09-27 18:09:03

我有一个DB是由另一个web api使用。我需要在我的应用程序中对一个表和两个字段对这个数据库进行一个DB选择查询。我看到我可以创建一个数据库第一DB上下文与一些工具在。net core 1通过这个链接。然而,为一个可能随着web api的变化而变化的数据库创建整个DBContext似乎有些繁琐。此外,我不应该给它写信。因此,我可以更改SQL server中的访问权限,让用户只选择。此外,我想把我的sql连接字符串在我的应用程序设置。Json文件中包含所有其他连接字符串。

问题:是否有可能在我的控制器中建立一个类似的sqlconnection:

private readonly SqlConnection dbCon = new SQLConnection(Configuration.GetConnectionString("DBCon"));

我的DBCon在我的appsettings中定义。json文件。当我尝试使用上面的代码时,我得到了错误:

名称Configuration在当前上下文中不存在。

所以显然配置不是从appsettings.json中获取设置的答案。

我需要为一个简单的查询设置一个快速sql连接,该查询不需要任何用户输入而无需大量配置。如有任何帮助,不胜感激。

在4.6控制台应用程序中,我可以使用ConfigurationManager从app.config中获取连接字符串。不知道如何从appsettings.json中获取它。它可能在Startup.cs中获取它,但不确定如何将它获取到那里并使其对控制器可用。

更新:AppSettings。Json格式如下:

{
 "ConnectionStrings": {
    "DefaultConnection": "valid Connection String",
    "DBCon": "valid Connection String"
  }, ....

.net core 1为1个查询添加了只读数据库连接

你可以(也应该)使用依赖注入来实现这一点。

我将创建一个简单的服务,它有一个方法来执行您的查询。服务类可以通过IOptions实例注入连接字符串。或者,你也可以直接将这些选项注入到控制器中。

OtherDbOptions

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

OtherDbService

public class OtherDbService
{
    private readonly string _connectionString;
    public OtherDbService(IOptions<OtherDbOptions> options)
    {
        _connectionString = options.Value.ConnectionString;
    }
    public object GetData()
    {
        // create your database connection and return data
    }
}
启动

public void ConfigureServices(IServiceCollection services)
{
    // add options services
    services.AddOptions();
    // configure OtherDbOptions using code
    services.Configure<OtherDbOptions>(options =>
    {
        options.ConnectionString = "value from appsettings.json";
    });
    // register OtherDbService for DI
    services.AddTransient<OtherDbService>();
    // other configurations
    ...
}

控制器(选项1 -注入服务)

public OtherDbController(OtherDbService service)
{
    _service = service;
}

控制器(选项2 -注入选项)

public OtherDbController(IOptions<OtherDbOptions> options)
{
    _options = options.Value;
}