private async Task AssertResourcesToAssignInRelationshipsExistAsync(TResource resource, CancellationToken cancellationToken)
        {
            var missingResources = new List <MissingResourceInRelationship>();

            foreach (var(queryLayer, relationship) in _queryLayerComposer.ComposeForGetTargetedSecondaryResourceIds(resource))
            {
                object rightValue = relationship.GetValue(resource);
                ICollection <IIdentifiable> rightResourceIds = TypeHelper.ExtractResources(rightValue);

                var missingResourcesInRelationship = GetMissingRightResourcesAsync(queryLayer, relationship, rightResourceIds, cancellationToken);
                await missingResources.AddRangeAsync(missingResourcesInRelationship, cancellationToken);
            }

            if (missingResources.Any())
            {
                throw new ResourcesInRelationshipsNotFoundException(missingResources);
            }
        }
Пример #2
0
        protected async Task AssertResourcesToAssignInRelationshipsExistAsync(TResource primaryResource, CancellationToken cancellationToken)
        {
            var missingResources = new List <MissingResourceInRelationship>();

            foreach ((QueryLayer queryLayer, RelationshipAttribute relationship) in _queryLayerComposer.ComposeForGetTargetedSecondaryResourceIds(
                         primaryResource))
            {
                object rightValue = relationship.GetValue(primaryResource);
                ICollection <IIdentifiable> rightResourceIds = _collectionConverter.ExtractResources(rightValue);

                IAsyncEnumerable <MissingResourceInRelationship> missingResourcesInRelationship =
                    GetMissingRightResourcesAsync(queryLayer, relationship, rightResourceIds, cancellationToken);

                await missingResources.AddRangeAsync(missingResourcesInRelationship, cancellationToken);
            }

            if (missingResources.Any())
            {
                throw new ResourcesInRelationshipsNotFoundException(missingResources);
            }
        }