private static async Task StoreMasterData(List <EpcisMasterData> epcisMasterDatas, IDbTransaction tx, CancellationToken cancellationToken) { if (epcisMasterDatas.Count == 0) { return; } var masterDataDtoManager = new MasterdataDtoManager(); for (short masterdataId = 0; masterdataId < epcisMasterDatas.Count; masterdataId++) { masterDataDtoManager.AddMasterdata(epcisMasterDatas[masterdataId]); } await masterDataDtoManager.PersistAsync(tx, cancellationToken); }
public async Task <IEnumerable <EpcisMasterData> > Fetch(string[] attributes, bool includeChildren, CancellationToken cancellationToken) { _parameters.SetLimit(_limit > 0 ? _limit : int.MaxValue); var masterdataManager = new MasterdataDtoManager(); masterdataManager.MasterDataDtos.AddRange(await _connection.QueryAsync <MasterDataDto>(new CommandDefinition(_sqlTemplate.RawSql, _parameters.Values, cancellationToken: cancellationToken))); if (attributes != null) { var query = !attributes.Any() ? SqlQueries.Read_MasterdataAllAttributes : SqlQueries.Read_MasterdataAttributes; var command = new CommandDefinition(query, new { Ids = masterdataManager.MasterDataDtos.Select(x => x.Id).ToArray(), Attributes = attributes }, cancellationToken: cancellationToken); masterdataManager.AttributeDtos.AddRange(await _connection.QueryAsync <MasterDataAttributeDto>(command)); } if (includeChildren) { var command = new CommandDefinition(SqlQueries.Read_MasterdataChildren, new { Ids = masterdataManager.MasterDataDtos.Select(x => x.Id).ToArray() }, cancellationToken: cancellationToken); masterdataManager.HierarchyDtos.AddRange(await _connection.QueryAsync <MasterDataHierarchyDto>(command)); } return(masterdataManager.FormatMasterdata()); }