依赖注入:在对.NET核心注入配置2.0
我移植一些旧的软件到.NET的核心2.0 ...依赖注入:在对.NET核心注入配置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();
}
谢谢
如果DBHandler是您的基类,并且DbActivityRepository是DBHandler的子类,则不需要在DBActivityRepository中创建DBHandler的实例,您可以直接使用它们的public和protected方法/属性(如继承),如下所示:
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);
}
}
对于asp.net核心中的依赖注入,您需要使用内置的DI引擎。 首先,您需要创建appsetting.json。
"ConnectionStrings": {
"NameOfContext":"server=localhost;userid=root;password=password;"
}
其次,为连接字符串和其他属性创建选项类型,您需要从appsettings.json中读取什么。
对于IServiceCollection服务从appsettings.json读取属性:
services.Configure<YourServiceOptions>(_config["ConnectionStrings:NameOfContext"])
而且,最后一步是init你的数据库连接:
services.AddDbContext<NameOfContext>(builder => builder.UseMySql(options.ConnectionString));
与MySQL这只作品。
@Florian Koch ...但在我的情况下,DI在类库(DAL)中,该类在MVC项目*享。我需要在DAL中注入连接字符串以集中在所有实现中。 – Cicciux
@Cicciux抱歉,但这不是我的答案,我只是改进了格式 –
https://www.codeproject.com/Articles/1204089/ASP-NET-Core-Dependency-Injection – Ramankingdom
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/依赖注入 – Ramankingdom