依赖注入:在 .Net Core 2.0 中注入配置
Dependency Injection: Injecting configuration in .Net Core 2.0
我正在将一些旧软件迁移到 .Net core 2.0 ...
我想从基础 class...
向我的 class DBActivityRepository 中注入一个连接字符串
是不是只需要在创建base的时候传配置就可以了class
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 是您的基础 class 并且 DbActivityRepository 是 DBHandler 的子class,则没有必要在 DBActivityRepository 中创建 DBHandler 实例,您可以使用它们 public并直接保护 methods/properties(继承),像这样:
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);
}
}
我正在将一些旧软件迁移到 .Net core 2.0 ...
我想从基础 class...
向我的 class DBActivityRepository 中注入一个连接字符串是不是只需要在创建base的时候传配置就可以了class
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 是您的基础 class 并且 DbActivityRepository 是 DBHandler 的子class,则没有必要在 DBActivityRepository 中创建 DBHandler 实例,您可以使用它们 public并直接保护 methods/properties(继承),像这样:
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);
}
}