private OeDbEnumerator(OeDbEnumerator parentEnumerator, OeNavigationEntryFactory entryFactory)
        {
            ParentEnumerator = parentEnumerator;
            Context          = parentEnumerator.Context;
            EntryFactory     = entryFactory;

            if (entryFactory.EdmNavigationProperty.Type.Definition is EdmCollectionType)
            {
                _uniqueConstraint = new HashSet <Object>(entryFactory.EqualityComparer);
            }

            Initialize();
        }
 public OeDbEnumerator GetFromPool(OeDbEnumerator parentEnumerator, OeNavigationEntryFactory entryFactory)
 {
     if (_pool.TryGetValue(entryFactory, out OeDbEnumerator? dbEnumerator))
     {
         dbEnumerator.Initialize();
     }
     else
     {
         dbEnumerator = new OeDbEnumerator(parentEnumerator, entryFactory);
         _pool.Add(entryFactory, dbEnumerator);
     }
     return(dbEnumerator);
 }
Esempio n. 3
0
        public IOeDbEnumerator CreateChild(OeNavigationEntryFactory entryFactory, CancellationToken cancellationToken)
        {
            IAsyncEnumerable <Object?> asyncEnumerable;
            Object?navigationValue = entryFactory.GetValue(Current);

            if (navigationValue is IEnumerable enumerable)
            {
                asyncEnumerable = Infrastructure.AsyncEnumeratorHelper.ToAsyncEnumerable(enumerable);
            }
            else
            {
                asyncEnumerable = Infrastructure.AsyncEnumeratorHelper.ToAsyncEnumerable(Task.FromResult(navigationValue));
            }

            IAsyncEnumerator <Object?> asyncEnumerator = asyncEnumerable.GetAsyncEnumerator(cancellationToken);

            asyncEnumerator.MoveNextAsync().GetAwaiter().GetResult();
            return(new OeEntityDbEnumerator(asyncEnumerator, entryFactory, this));
        }
 public IOeDbEnumerator CreateChild(OeNavigationEntryFactory entryFactory, CancellationToken cancellationToken)
 {
     return(Context.GetFromPool(this, entryFactory));
 }
Esempio n. 5
0
 public OeEntityDbEnumerator(IAsyncEnumerator <Object?> asyncEnumerator, OeNavigationEntryFactory entryFactory, OeEntityDbEnumerator parentEnumerator)
     : this(asyncEnumerator, entryFactory)
 {
     _parentEnumerator = parentEnumerator;
 }