没有DbOptions的情况下如何获取连接字符串?

问题描述

我是一个不需要DbContext类的项目,并且正在appsettings.json上使用BlobStorage DB

这是我的appsettings.json

{
  "ConnectionStrings": {
    "StorageConnectionString": "Connection"
 }

并且我在Startup.cs类上进行配置,没有任何选项,因为我现在不需要DbContext

_configuration.GetConnectionString("StorageConnectionString");

但是我需要在我的BlobStorageService类上调用连接字符串,而无需传递连接字符串名称(因为已经在appsettings.json上)。

问题是:如何在不传递连接字符串名称的情况下在Service类上调用connectionString?

解决方法

如果我使用的话就可以使用

 Configuration.GetConnectionString("StorageConnectionString"); 

在我的BlobStorageService中获取IConfiguration并进行依赖项注入。

,

您如何注册BlobStorageService?如果您已经在Startup.cs中检索连接字符串,则始终可以将BlobStorageService注册为具有字符串依赖性的字符串,以便在运行时在服务中使用。

在您的BlobStorageService中,您可以要求在请求服务时插入一个字符串:

public class BlobStorageService : IBlobStorageService
{
    private readonly string _connectionString;

    public BlobStorageService(string connectionString)
    {
        _connectionString = connectionString;

        // Do whatever storage client initialization is required by the SDK...
    }
}

然后,在您的Startup.cs中,使用在应用程序启动时已经检索到的连接字符串注册依赖项:

public void ConfigureServices(IServiceCollection services)
{
    var yourConnectionString = Configuration.GetConnectionString("StorageConnectionString");
            
    // Register with the appropiate service lifetime
    services.AddTransient<IBlobStorageService>(_ => new BlobStorageService(yourConnectionString));

    // ...other dependencies
}