Browse Source

Update the Mongo DB helpers to use [EnumeratorCancellation]

pull/954/head
Kévin Chalet 6 years ago
parent
commit
7a104c816a
  1. 4
      src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs
  2. 4
      src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs
  3. 15
      src/OpenIddict.MongoDb/OpenIddictMongoDbHelpers.cs

4
src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs

@ -74,9 +74,9 @@ namespace System.Data.Entity
throw new ArgumentNullException(nameof(source));
}
return ExecuteAsync(cancellationToken);
return ExecuteAsync(source, cancellationToken);
async IAsyncEnumerable<T> ExecuteAsync([EnumeratorCancellation] CancellationToken cancellationToken)
static async IAsyncEnumerable<T> ExecuteAsync(IQueryable<T> source, [EnumeratorCancellation] CancellationToken cancellationToken)
{
foreach (var element in await source.ToListAsync(cancellationToken))
{

4
src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs

@ -133,9 +133,9 @@ namespace Microsoft.EntityFrameworkCore
throw new ArgumentNullException(nameof(source));
}
return ExecuteAsync(cancellationToken);
return ExecuteAsync(source, cancellationToken);
async IAsyncEnumerable<T> ExecuteAsync([EnumeratorCancellation] CancellationToken cancellationToken)
static async IAsyncEnumerable<T> ExecuteAsync(IQueryable<T> source, [EnumeratorCancellation] CancellationToken cancellationToken)
{
foreach (var element in await source.ToListAsync(cancellationToken))
{

15
src/OpenIddict.MongoDb/OpenIddictMongoDbHelpers.cs

@ -7,6 +7,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using JetBrains.Annotations;
@ -31,9 +32,9 @@ namespace MongoDB.Driver
throw new ArgumentNullException(nameof(source));
}
return ExecuteAsync();
return ExecuteAsync(source, cancellationToken);
async IAsyncEnumerable<T> ExecuteAsync()
static async IAsyncEnumerable<T> ExecuteAsync(IAsyncCursorSource<T> source, [EnumeratorCancellation] CancellationToken cancellationToken)
{
using var cursor = await source.ToCursorAsync();
@ -61,15 +62,7 @@ namespace MongoDB.Driver
throw new ArgumentNullException(nameof(source));
}
return ExecuteAsync();
async IAsyncEnumerable<T> ExecuteAsync()
{
await foreach (var element in ((IAsyncCursorSource<T>) source).ToAsyncEnumerable(cancellationToken))
{
yield return element;
}
}
return ((IAsyncCursorSource<T>) source).ToAsyncEnumerable(cancellationToken);
}
}
}

Loading…
Cancel
Save