Dependency injection 将connectionString绑定到每个DataProvider构造函数或注入连接接口

Dependency injection 将connectionString绑定到每个DataProvider构造函数或注入连接接口,dependency-injection,sqlconnection,Dependency Injection,Sqlconnection,我的服务都在访问DataProvider类。每个DataProvider构造函数都将connectionString作为DI工具注入的参数获取 在IConnectionString接口中隐藏connectionString并注入此接口而不是connectionString的优点在哪里 请考虑您的答案:我不使用任何接口来访问我的DATAvAsvices类。这些类不使用IDbConnection 我将自己完全绑定到MS SQL Server,这就是我想要的:注入不仅仅是因为可重复性。更多的是关于可测

我的服务都在访问DataProvider类。每个DataProvider构造函数都将connectionString作为DI工具注入的参数获取

在IConnectionString接口中隐藏connectionString并注入此接口而不是connectionString的优点在哪里

<>请考虑您的答案:我不使用任何接口来访问我的DATAvAsvices类。这些类不使用IDbConnection


我将自己完全绑定到MS SQL Server,这就是我想要的:

注入不仅仅是因为可重复性。更多的是关于可测试性

如果您100%绑定到SQL Server,那么您的测试也将绑定到SQL Server,这不是很好,而且会使事情变得复杂

在我看来,如果您不为数据提供者使用任何接口,那么使用ConnectionString的接口将带来任何好处

注入元件的思想是依赖注入原理。 s也


但是,即使您将使用MS SQl Server,我也强烈建议您使用某种网关/存储库模式。 这将为您提供更好的测试体验和更可靠的软件

作为参考,我可以向您推荐bob Robert C Martin叔叔的cleancoders网络广播


http//www.cleancoders.com

但即使您将使用MS SQl Server,这听起来就像我从未说过我只想使用MS SQl Server一样。你知道我做测试吗p好的,让我们假设我做集成测试,我真正做的是,对于每个服务,我创建一个/多个dataprovider类,并在它们的构造函数中手动传递connectionString。没有任何东西绑定到M$SQL。字符串是一个抽象,可以包含每个数据库路径。正如我所说,我将坚持使用SQL女士。对数据库进行评估,然后确定。而不是你以50/50%的几率改变的东西-对。我只想指出,主要的好处是可测试性:-看来你还没有完全理解我之前所说的观点。可测试性没有任何好处。我可以测试一个注入了connectionString/IConnectionString接口的具体数据提供程序。如果您有其他意见,请提供一个样本,以显示其优势,谢谢。