我与Stock集成在一起,每当我要发布/获取数据时,都应该通过从数据库中获取一些数据来配置stockContext。因此,我的服务(如ProductService)可以与该库存集成一起使用。 我有一个问题我可以在单独的Service中配置stockContext吗? 有一个例子:
public class StockProviderService : IStockProviderService {
private readonly IDatabase _context;
public StockProviderService ()
{
_context = new Database();
}
public StockProviderService (IDatabase context)
{
_context = context;
}
public IDataProvider GetStockContext(Integration name, Guid merchantId)
{
var merchantCredentials = _context.StockCredentials.FirstOrDefault(wc => wc.MerchantId == new merchantId);
var config = new StockIntegrationConfig()
{
ApiKey = merchantCredentials.ApiKey,
ApiSecret = merchantCredentials.ApiSecret
};
return StockIntegrationEngine.GetDataProvider(name, config);
}
}
现在我可以像这样使用ContextConfigurator了:
public async Task SendProductsToStock(IEnumerable<Guid> productIds, Integration name, Guid merchantId)
{
var dataProvider = _stockProvider.GetStockContext(name, merchantId); <-- HERE
var products = _context.Products
.Where(p => productIds.Contains(p.ProductID))
.ToList();
var stockProducts = Mapper.Map<List<ProductDataRequest>>(products);
await dataProvider.Products.CreateProducts(stockProducts);
await _context.SaveChangesAsync();
}
也许最好将我的GetStockContext保存在ServiceLayer Service以外的另一个文件/项目中?但我怀疑必须先从数据库中获取一些数据,然后才能对其进行配置