当前位置: 首页 > 知识库问答 >
问题:

如何将 ConnectionString Value 从 appsetting.json 获取到 Core WebAPI 中的存储库

左翰海
2023-03-14

我是Net Core WebAPI的新手,我正在开发没有EF的Core Web API。如果我无法将连接字符串从appsetting.json放入我的存储库,我就卡住了

我已经创建了CommonRepository的构造函数,并使用IConfiguration来获取连接字符串值

public CommonRepository(IConfiguration configuration)
    {
        _configuration = configuration;
    }
    private readonly IConfiguration _configuration;

但是在创建公共存储库的对象时,它给出了一个错误

CommonRepository commonRepository =new CommonRepository();

没有给出与“CommonRepository.CommonRepository(IConfiguration)”的必需正式参数“configuration”相对应的参数

共有2个答案

富凯旋
2023-03-14

这通常使用依赖注入来完成,它应该在startup.cs文件中设置。因此:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<IConfiguration>(Configuration);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ...
    }
}

ASP。Net将自动将配置从主机传递到此类。我们使用它来创建一个单例,将配置注入所有使用IConfiguration作为参数的构造函数。在这里解释

钱俊楚
2023-03-14

您可以引用以下代码来创建和使用 CommonRepository,然后获取连接字符串。

公共存储库:

public interface ICommonRepository
{
    string GetConnectionstring();
}

public class CommonRepository : ICommonRepository
{
    private readonly IConfiguration _configuration;
    public CommonRepository(IConfiguration configuration)
    {
        _configuration = configuration;
    }
    public string GetConnectionstring()
    {
        return _configuration.GetConnectionString("DefaultConnection");
    }
}

在启动时注册上述存储库。ConfigureServices方法:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddScoped<ICommonRepository, CommonRepository>();
    }

控制器:

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;
    private readonly ICommonRepository _commonRepositoty;

    public HomeController(ILogger<HomeController> logger, ICommonRepository commonRepository)
    {
        _logger = logger;
        _commonRepositoty = commonRepository;
    }

    public IActionResult Index()
    {
        var str = _commonRepositoty.GetConnectionstring();
        return View();
    }

结果如下:

有关详细信息,请参阅 ASP.NET 核心中的依赖关系注入。

 类似资料:
  • 我有一个JTable,我可以在其中添加具有几个属性的用户,如年龄、名称等。这起作用了,用户被添加到我的arraylist和JTable中。现在我想要的是,当我选择JTable行时,能够获得存储在用户的arrayList中的对象,以便我可以修改或删除它们。 有谁能帮我一下吗?谢谢!

  • 所以我有一个企业存储库,那里有已经部署的主POM。现在我有其他项目,我需要单独安装,但他们有父pom。 每当我进行mvn清理安装时,我都无法找到父pom的工件。 我的本地设置。xml为central定义了镜像,因为我假设maven首先尝试在relativePath中搜索父pom,然后是本地repo,最后是远程repo。父POM具有所有提到的存储库和分发详细信息,因此其他项目或本地设置中不存在这些回

  • 我想从FireBase的方法获取下载Url。如何使用以下代码获取下载Url? 我使用了,但这不起作用。

  • 在使用JDBC处理SQL Server存储过程时,我偶尔会遇到两种形式的奇怪行为: 问题1:我在SQL Server Management Studio(SSMS)中运行一个存储过程,它返回一个结果集。然而,当我试着 我有个例外 com.microsoft.sqlserver.jdbc.sqlserverexception:语句未返回结果集。 问题2:我在SSMS中运行了一个存储过程,它引发了一个

  • 有没有办法从Firebase存储中获取所有的URL? 我知道有从firebase数据库获取URL的方法,比如将firebase存储文件的URL存储在firebase实时数据库中,然后从它获取URL。但是我正在从图片中显示的按钮上传图片,并且想要所有那些上传图片的URL直接从firebase存储路径像... 用它就像... 如有任何帮助,我们将不胜感激。