【发布时间】:2016-02-17 12:10:51
【问题描述】:
我有一个 ASP.NET 5 MVC 6 应用程序。它有一个数据访问库,它需要一个连接字符串来连接到数据库。 目前,我正在将一个带有连接字符串的强类型配置设置类作为公共属性从 MVC 控制器(通过 DI 接收)一直传递到数据访问类库。
我想知道类库是否有更好的方法来使用依赖注入或任何其他机制访问强类型配置设置?
谢谢。
编辑:代码示例
这是一个从业务层调用的通用 DbTransaction 类。
public class DbTransactions<TEntity> where TEntity : DbEntity, new()
{
private readonly Query _query;
public DbTransactions(string connectionString)
{
_query = new Query(connectionString);
}
public TEntity GetById(long id)
{
var sqlGenerator = new SqlGenerator<TEntity>();
var sql = sqlGenerator.GetSelectByIdQuery();
var mapper = new NMapper.Mapper<TEntity>();
var cmd = _query.GetNpgsqlCommand(sql, new { id });
return mapper.GetObject(cmd);
}
}
查询类根据提供给它的连接字符串创建连接对象。
【问题讨论】:
-
只需在数据访问类中注入
IOptions<T>即可。 -
@HenkMollema:将
IOptions<T>注入到您的组件中是a really bad idea。 -
您是否在控制器操作中创建数据访问类?这些类的构造函数长什么样子?
-
@YacoubMassad 否 DataAccess 类不能从控制器操作中访问。控制器和 DataAccess 类之间有一个业务层进行通信。数据访问类没有属性,只有静态方法来执行 CRUD 操作。他们在构造函数上什么都没有。只是默认构造函数。
标签: c# dependency-injection asp.net-core asp.net-core-mvc