bit*_*ift 1 asp.net-core ef-core-2.1
我已经设置了一个包含 .net core 类库项目和 asp.net core Web api 项目的解决方案。为了使用我的类库,我通过ConfigureServices 添加了接口,其中DataRepo 是类库中的一个类。
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IDataRepo, DataRepo>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
Run Code Online (Sandbox Code Playgroud)
该类库需要获取 API 项目文件 appsettings.json 中特定于环境的连接字符串。我如何将配置设置传递给它?另外,我想在库项目中添加 EF 核心数据模型,并且不想向 API 项目注册 DbContext,而是在库的构造函数中使用连接信息与 DbContext 中的配置一起传递。首先,如何将 appsettings.json 中的配置设置获取到我的类库?
namespace DataLib
{
public class DataRepo : IDataRepo
{
public DataRepo()
{
}
public string GetHello()
{
return "hello from lib";
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的类需要连接字符串,则只需为其提供连接字符串即可。您可以利用重载来AddScoped
实现需要Action<T>
.
首先,添加一个接受连接字符串的构造函数:
public class DataRepo : IDataRepo
{
private readonly string _connectionString;
public DataRepo(string connectionString)
{
_connectionString = connectionString ?? throw new ArgumentNullException(nameof(connectionString));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在Startup.cs
:
services.AddScoped<IDataRepo>(p => new DataRepo(Configuration.GetConnectionString("Foo")));
Run Code Online (Sandbox Code Playgroud)
您的类不应该知道或关心连接字符串实际来自哪里,这就是为什么其他方法(例如注入)IConfiguration
在这里是错误的。
归档时间: |
|
查看次数: |
388 次 |
最近记录: |