我正在寻找一种方法将我的连接注入我的存储库.我尝试注入SqlConnection使用IDBConnection,但是在NInject尝试停用连接时遇到了一些问题,从未调用过该事件.我无法弄清楚如何将连接字符串注入我的存储库.
有人可以给我一个建议吗?
gus*_*ico 38
我使用NInject来执行项目的依赖注入.我通常以下面的配置结束:
简单的工厂接口
public interface IDbConnectionFactory
{
IDbConnection CreateConnection();
}
Run Code Online (Sandbox Code Playgroud)
工厂实施
public class SqlConnectionFactory : IDbConnectionFactory
{
private readonly string _connectionString;
public SqlConnectionFactory(string connectionString)
{
_connectionString = connectionString;
}
public IDbConnection CreateConnection()
{
var conn = new SqlConnection(_connectionString);
conn.Open();
return conn;
}
}
Run Code Online (Sandbox Code Playgroud)
NInject配置:
Bind<IDbConnectionFactory>()
.To<SqlConnectionFactory>()
.WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString);
Run Code Online (Sandbox Code Playgroud)
存储库的示例:
public class UserRepository : IUserRepository
{
private readonly IDbConnectionFactory _dbConnectionFactory;
public UserRepository(IDbConnectionFactory dbConnectionFactory)
{
_dbConnectionFactory = dbConnectionFactory;
}
public IEnumerable<User> List()
{
using (var dbConnection = _dbConnectionFactory.CreateConnection())
{
....
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我总是让ADO.NET负责连接池.所以我每次都需要执行数据库操作时打开和关闭连接.
这种方法对我有用,并且正如您在问题中提到的那样非常简单.
| 归档时间: |
|
| 查看次数: |
8924 次 |
| 最近记录: |