繁体   English   中英

依赖项注入:.Net Core 2.0中的注入配置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM