[英]Dependency Injection: Injecting configuration in .Net Core 2.0
我正在将一些旧软件迁移到.Net core 2.0 ...
我想从基类中在我的类DBActivityRepository中插入一个连接字符串...
我是否应该在创建基类时通过配置
this._DBHandler = new DBHandler(configuration);
还是这样做更好:
private DBHandler _DBHandler;
private string connectionString;
public DBActivityRepository(IConfiguration configuration) : base(configuration)
{
// **Do I need this?**
this._DBHandler = new DBHandler(configuration);
connectionString = this._DBHandler.GetConnectionString();
}
谢谢
为了在asp.net核心中进行依赖项注入,您需要使用内置的DI引擎。 首先,您需要创建appsetting.json。
"ConnectionStrings": {
"NameOfContext":"server=localhost;userid=root;password=password;"
}
其次,为连接字符串和其他属性创建选项类型,您需要从appsettings.json中读取这些类型。
对于IServiceCollection服务,请从appsettings.json中读取属性:
services.Configure<YourServiceOptions>(_config["ConnectionStrings:NameOfContext"])
并且,最后一步是初始化数据库连接:
services.AddDbContext<NameOfContext>(builder => builder.UseMySql(options.ConnectionString));
这仅适用于MySql。
如果DBHandler是您的基类,而DbActivityRepository是DBHandler的子类,则不必在DBActivityRepository中创建DBHandler实例,则可以直接使用其公共和受保护的方法/属性(继承),如下所示:
public interface IConfiguration
{
string GetConnectionString();
}
public abstract class DbHandler
{
protected DbHandler(IConfiguration configuration)
{
ConnectionString = configuration.GetConnectionString();
}
protected string ConnectionString { get; }
}
public class DbActivityRepository : DbHandler
{
public DbActivityRepository(IConfiguration configuration)
: base(configuration)
{
}
private void DoSomething()
{
// use your connStr
Console.Write(ConnectionString);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.