C# 如何为API配置注入第二个databaseContext

C# 如何为API配置注入第二个databaseContext,c#,dependency-injection,asp.net-web-api2,C#,Dependency Injection,Asp.net Web Api2,我正在构建一个WebApi,我有一些问题 我为每个请求创建了服务,如产品、客户、销售等。。每个服务注入从基本存储库继承的存储库表,如: public ProductService(IProductRepository productRepository, IProductPriceRepository productPriceRepository, IProductProviderRepository pro

我正在构建一个WebApi,我有一些问题

我为每个请求创建了服务,如产品、客户、销售等。。每个服务注入从基本存储库继承的存储库表,如:

public ProductService(IProductRepository productRepository,
                      IProductPriceRepository productPriceRepository,
                      IProductProviderRepository productProviderRepository)
{
}
例如,SalesService需要其他服务,如:

public SalesService(IDocumentService documentService,
                    ICustomerService customerService,
                    IProductService productService)
{   
}
这或多或少就是我的应用程序的架构。 问题是,我需要另一个用于API配置的数据库上下文,在不进行冗余注入的情况下,如何正确地进行配置?比如:

public ProductService(IProductRepository productRepository,
                      IProductPriceRepository productPriceRepository,
                      IProductProviderRepository productProviderRepository,
                      ConfigurationApiContextService configurationApicontextService)
{
}
public SalesService(IDocumentService documentService,
                    ICustomerService customerService,
                    IProductService productService,
                    ConfigurationApiContextService configurationApicontextService)
{           
}
我用的是国际奥委会的团结。 这是向服务添加另一个dataContext的正确方法吗?是否可以使新的dataContext全局可用于整个应用程序

如果这是一种正确的方法,如果以后我想添加log4net包来记录整个应用程序,是否有太多的注入服务

很抱歉提出这些问题,刚刚开始使用WebApi;)

我也为糟糕的英语感到抱歉


提前感谢。

您的构造函数不应该有太多参数。但是你有4个参数,所以这很好。您可以使用来组合服务(如果它们具有逻辑或心理关系,则组合)

例如,如果customerService和Document services始终共存,请为它们创建一个aggreate服务。若你们们阅读了这份文件,你们们会理解得更多

但据我所知,您已经在产品服务上这样做了

我建议您使用
ConfigurationApiContextService
的接口。这就是您可以轻松测试并与ImpleManation失去耦合的方法

您不能与规则(接口)松耦合,但可以在deptency注入中与implementation松耦合。此外,您决定在顶层执行,而不是在中间或底层执行(控制反转)


因此,您的销售服务与产品服务规则(
IProductService
)相结合,而不是与implementation相结合。

您是否将第二个数据库上下文用于当前存储库?或者只是ConfigurationApiContextService将使用第二个db上下文?只是configurationapicontext将使用第二个db上下文,它只是客户端发送的数据和系统上最终存储的数据之间的数据解析器。问题是,例如,当salesservice依赖于poductservice时,是否有一些方法可以避免重复注入。谢谢你的邀请:)