我正在将一些旧软件迁移到.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();
}
由于
答案 0 :(得分:0)
对于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。
答案 1 :(得分:0)
如果DBHandler是您的基类而DbActivityRepository是DBHandler的子类,则不必在DBActivityRepository中创建DBHandler实例,您可以直接使用它们的public和protected方法/属性(继承),如下所示:< / p>
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);
}
}