Dependency injection 将connectionString绑定到每个DataProvider构造函数或注入连接接口
我的服务都在访问DataProvider类。每个DataProvider构造函数都将connectionString作为DI工具注入的参数获取 在IConnectionString接口中隐藏connectionString并注入此接口而不是connectionString的优点在哪里 <>请考虑您的答案:我不使用任何接口来访问我的DATAvAsvices类。这些类不使用IDbConnectionDependency injection 将connectionString绑定到每个DataProvider构造函数或注入连接接口,dependency-injection,sqlconnection,Dependency Injection,Sqlconnection,我的服务都在访问DataProvider类。每个DataProvider构造函数都将connectionString作为DI工具注入的参数获取 在IConnectionString接口中隐藏connectionString并注入此接口而不是connectionString的优点在哪里 请考虑您的答案:我不使用任何接口来访问我的DATAvAsvices类。这些类不使用IDbConnection 我将自己完全绑定到MS SQL Server,这就是我想要的:注入不仅仅是因为可重复性。更多的是关于可测
我将自己完全绑定到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接口的具体数据提供程序。如果您有其他意见,请提供一个样本,以显示其优势,谢谢。