我们有一个Azure工作者角色(基本上与Windows服务相同),我们将Ninject用于IoC并将IDbConnection注入我们的工作人员。最佳实践表明,您应该在不再使用连接时立即处理连接,而是在可能或可能没有意义的工作人员/服务中。那么在这种情况下处理数据库连接的好方法是什么呢?
我们的选择包括(也许也不限于此):
我不喜欢说实话,我希望还有其他解决方案......
答案 0 :(得分:1)
我将排除ServiceLocator(反)模式。
在我看来,使用Provider<ISomething>
的NInject概念将符合您的需要。基本上,提供程序是一种为您提供可以使用的连接的工具,可能在using
范围内。如果你想要更加'IoC gotcha'独立,你可以拥有这样一个IConnectionFactory
:
interface IConnectionFactory{
IDbConnection Open();
}