如何为 API 配置注入第二个 databaseContext
How can I inject second databaseContext for API Configuration
我正在构建 WebApi,我有一些问题...
我为每个请求创建了服务,如产品、客户、销售等。每个服务都会注入从基本存储库继承的存储库表,例如:
public ProductService(IProductRepository productRepository,
IProductPriceRepository productPriceRepository,
IProductProviderRepository productProviderRepository)
{
}
例如,SaleService 需要其他服务,例如:
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)
{
}
我正在使用 IoC Unity。
这是向服务添加另一个 dataContext 的正确方法吗?可以让整个应用程序全局访问新的 dataContext 吗?
如果这是一个正确的方法,如果以后我想添加 log4net 包来记录整个应用程序,是不是服务注入太多了?
抱歉这些问题,刚开始使用 WebApi ;)
也很抱歉英语不好。
提前致谢。
您的构造函数不应有太多参数。但是你有4个参数,所以没关系。您可以使用 Aggregate Services 组合服务(如果它们具有逻辑或心理关系,则组合)。
例如,如果您的 customerService 和 Document 服务总是在一起,请为它们创建一个聚合服务。如果您阅读 Refactoring to Aggregate Services 文档,您会了解更多。
但据我所知,您已经在您的产品服务中这样做了。
我建议您使用 ConfigurationApiContextService
的界面。这样您就可以轻松测试并失去与实现的耦合。
您不能与规则(接口)松耦合,但可以与依赖注入中的实现松耦合。此外,您决定在顶层而不是在中间或底部(控制反转)实现。
所以您的销售服务与产品服务规则 (IProductService
) 相结合,而不是与实施相结合。
我正在构建 WebApi,我有一些问题...
我为每个请求创建了服务,如产品、客户、销售等。每个服务都会注入从基本存储库继承的存储库表,例如:
public ProductService(IProductRepository productRepository,
IProductPriceRepository productPriceRepository,
IProductProviderRepository productProviderRepository)
{
}
例如,SaleService 需要其他服务,例如:
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)
{
}
我正在使用 IoC Unity。 这是向服务添加另一个 dataContext 的正确方法吗?可以让整个应用程序全局访问新的 dataContext 吗?
如果这是一个正确的方法,如果以后我想添加 log4net 包来记录整个应用程序,是不是服务注入太多了?
抱歉这些问题,刚开始使用 WebApi ;)
也很抱歉英语不好。
提前致谢。
您的构造函数不应有太多参数。但是你有4个参数,所以没关系。您可以使用 Aggregate Services 组合服务(如果它们具有逻辑或心理关系,则组合)。
例如,如果您的 customerService 和 Document 服务总是在一起,请为它们创建一个聚合服务。如果您阅读 Refactoring to Aggregate Services 文档,您会了解更多。
但据我所知,您已经在您的产品服务中这样做了。
我建议您使用 ConfigurationApiContextService
的界面。这样您就可以轻松测试并失去与实现的耦合。
您不能与规则(接口)松耦合,但可以与依赖注入中的实现松耦合。此外,您决定在顶层而不是在中间或底部(控制反转)实现。
所以您的销售服务与产品服务规则 (IProductService
) 相结合,而不是与实施相结合。