C# 有没有一种简单的方法可以在我的连接上使用依赖注入?

C# 有没有一种简单的方法可以在我的连接上使用依赖注入?,c#,asp.net,ninject,C#,Asp.net,Ninject,我正在寻找一种将连接注入存储库的方法。我尝试使用IDBConnection注入SqlConnection,但是当NInject尝试停用连接时出现了一些问题,事件从未被调用。我不知道如何将连接字符串注入到我的存储库中 有人能给我一个建议吗?我使用NInject来执行项目的依赖注入。我通常以以下配置结束: 简单工厂界面 public interface IDbConnectionFactory { IDbConnection CreateConnection(); } 工厂实施 publi

我正在寻找一种将连接注入存储库的方法。我尝试使用
IDBConnection
注入
SqlConnection
,但是当
NInject
尝试停用连接时出现了一些问题,事件从未被调用。我不知道如何将连接字符串注入到我的存储库中


有人能给我一个建议吗?

我使用NInject来执行项目的依赖注入。我通常以以下配置结束:

简单工厂界面

public interface IDbConnectionFactory
{
    IDbConnection CreateConnection();
}
工厂实施

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;
    }
}
NInject配置:

Bind<IDbConnectionFactory>()
    .To<SqlConnectionFactory>()
    .WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString);
Bind()
.至()
.WithConstructorArgument(“connectionString”,
ConfigurationManager.ConnectionString[“SqlConnection”].ConnectionString);
存储库示例:

public class UserRepository : IUserRepository
{
    private readonly IDbConnectionFactory _dbConnectionFactory;

    public UserRepository(IDbConnectionFactory dbConnectionFactory)
    {
        _dbConnectionFactory = dbConnectionFactory;
    }

    public IEnumerable<User> List()
    {
        using (var dbConnection = _dbConnectionFactory.CreateConnection())
        {
            ....
        }
    }
}
公共类用户存储库:IUserRepository
{
私有只读IDbConnectionFactory dbonnectionFactory;
公共用户存储库(IDbConnectionFactory dbConnectionFactory)
{
_dbConnectionFactory=dbConnectionFactory;
}
公共IEnumerable列表()
{
使用(var dbConnection=\u dbConnectionFactory.CreateConnection())
{
....
}
}
}
编辑:我总是让ADO.NET处理连接池。因此,每次需要执行数据库操作时,我都会打开和关闭连接


这种方法对我很有效,并且非常简单,正如您在问题中提到的。

我正在寻找的完整示例。如果允许的话,我会尽快接受答案。谢谢你,伙计。如果你想在事务中使用请求间共享连接,你会怎么做呢?在基于事务的场景中,我使用工作单元模式。不仅仅是一个连接工厂,不是真的。存储库将接收UOW而不是连接工厂。UOW现在将负责打开/关闭/提交…在List方法中,您需要从UOW获取连接,而不是创建新连接。这有意义吗?@LiverpoolOwen,我想你的意思是每次请求一个实例时都使用容器注入相同的实例。然后,您可以将绑定配置为使用
NInject
InSingletonScope
配置。我不建议使用常规的单例方法使用静态字段来保存实例引用。您必须提供更多信息,可能还需要提供一个代码示例。