问题描述
我是一个不需要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
}