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)); 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)) 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)); 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)) foreach (var element in await source.ToListAsync(cancellationToken))
{ {

15
src/OpenIddict.MongoDb/OpenIddictMongoDbHelpers.cs

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

Loading…
Cancel
Save