Beispiel #1
0
 public RelatedValuesEnumerable(
     AsyncIncludeCollectionIterator iterator,
     IIncludeKeyComparer keyComparer)
 {
     _iterator    = iterator;
     _keyComparer = keyComparer;
 }
 public IEnumerable <EntityLoadInfo> Load(QueryContext queryContext, IIncludeKeyComparer keyComparer)
 {
     return
         (_includeCollectionIterator
          .GetRelatedValues(keyComparer)
          .Select(vr => new EntityLoadInfo(vr, _materializer)));
 }
Beispiel #3
0
 public IEnumerable <EntityLoadInfo> Load(QueryContext queryContext, IIncludeKeyComparer keyComparer)
 => ((InMemoryQueryContext)queryContext).Store
 .GetTables(_targetType)
 .SelectMany(t =>
             t.Rows.Select(vs => new EntityLoadInfo(
                               new ValueBuffer(vs), vb => _materializer(t.EntityType, vb)))
             .Where(eli => keyComparer.ShouldInclude(eli.ValueBuffer)));
Beispiel #4
0
            public IAsyncEnumerable <EntityLoadInfo> GetRelatedValues(IIncludeKeyComparer keyComparer)
            {
                var valueBuffer = _queryContext.GetIncludeValueBuffer(_queryIndex).WithOffset(_valueBufferOffset);

                return(new AsyncEnumerableAdapter <EntityLoadInfo>(
                           new EntityLoadInfo(valueBuffer, _materializer)));
            }
Beispiel #5
0
 public IAsyncEnumerable <EntityLoadInfo> Load(QueryContext queryContext, IIncludeKeyComparer keyComparer)
 {
     return
         (AsyncLinqOperatorProvider
          ._Select(
              _includeCollectionIterator.GetRelatedValues(keyComparer),
              vr => new EntityLoadInfo(vr, _materializer)));
 }
            public IEnumerable <EntityLoadInfo> Load(QueryContext queryContext, IIncludeKeyComparer keyComparer)
            {
                var valueBuffer
                    = ((RelationalQueryContext)queryContext)
                      .GetIncludeValueBuffer(_queryIndex).WithOffset(_valueBufferOffset);

                yield return(new EntityLoadInfo(valueBuffer, _materializer));
            }
 private static IEnumerable <EntityLoadInfo> GetRelatedValueBuffers(
     QueryContext queryContext,
     IEntityType targetType,
     IIncludeKeyComparer keyComparer,
     Func <IEntityType, ValueBuffer, object> materializer)
 {
     return(((InMemoryQueryContext)queryContext).Store
            .GetTables(targetType)
            .SelectMany(t =>
                        t.Rows.Select(vs => new EntityLoadInfo(
                                          new ValueBuffer(vs), vb => materializer(t.EntityType, vb)))
                        .Where(eli => keyComparer.ShouldInclude(eli.ValueBuffer))));
 }
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public virtual IEnumerable <ValueBuffer> GetRelatedValues(
            [NotNull] IIncludeKeyComparer keyComparer)
        {
            if (!_initialized)
            {
                _hasRemainingRows = _relatedValuesEnumerator.MoveNext();
                _initialized      = true;
            }

            while (_hasRemainingRows &&
                   keyComparer.ShouldInclude(_relatedValuesEnumerator.Current))
            {
                yield return(_relatedValuesEnumerator.Current);

                _hasRemainingRows = _relatedValuesEnumerator.MoveNext();
            }
        }
Beispiel #9
0
 public virtual IAsyncEnumerable <ValueBuffer> GetRelatedValues(
     [NotNull] IIncludeKeyComparer keyComparer)
 => new RelatedValuesEnumerable(this, keyComparer);