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); }
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)); }
public OeEntityDbEnumerator(IAsyncEnumerator <Object?> asyncEnumerator, OeNavigationEntryFactory entryFactory, OeEntityDbEnumerator parentEnumerator) : this(asyncEnumerator, entryFactory) { _parentEnumerator = parentEnumerator; }