protected override async Task <CdcDataOrchestratorResult <PersonCdcWrapperCollection, PersonCdcWrapper> > GetOutboxEntityDataAsync() { var pColl = new PersonCdcWrapperCollection(); var result = await SelectQueryMultiSetAsync( new MultiSetCollArgs <PersonCdcWrapperCollection, PersonCdcWrapper>(_personCdcWrapperMapper, r => pColl = r, stopOnNull : true) // Root table: Demo.Person ).ConfigureAwait(false); result.Result.AddRange(pColl); return(result); }
protected override async Task <CdcDataOrchestratorResult <PersonCdcWrapperCollection, PersonCdcWrapper> > GetOutboxEntityDataAsync() { var pColl = new PersonCdcWrapperCollection(); var result = await SelectQueryMultiSetAsync( new MultiSetCollArgs <PersonCdcWrapperCollection, PersonCdcWrapper>(_personCdcWrapperMapper, r => pColl = r, stopOnNull : true), // Root table: Legacy.Person new MultiSetCollArgs <PersonCdc.PersonAddressCdcCollection, PersonCdc.PersonAddressCdc>(_personAddressCdcMapper, r => { foreach (var pa in r.GroupBy(x => new { x.PersonId }).Select(g => new { g.Key.PersonId, Coll = g.ToCollection <PersonCdc.PersonAddressCdcCollection, PersonCdc.PersonAddressCdc>() })) // Join table: PersonAddress (Legacy.PersonAddress) { pColl.Where(x => x.PersonId == pa.PersonId).ForEach(x => x.Addresses = pa.Coll); } }) // Related table: PersonAddress (Legacy.PersonAddress) ).ConfigureAwait(false); result.Result.AddRange(pColl); return(result); }
protected override Task <IEnumerable <EventData> > CreateEventsAsync(PersonCdcWrapperCollection coll, CancellationToken cancellationToken) => CreateEventsWithGetAsync <Person>(coll, w => _personManager.GetAsync(w.PersonId), cancellationToken);