You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
/*
|
|
* Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
|
* See https://github.com/openiddict/openiddict-core for more information concerning
|
|
* the license and the contributors participating to this project.
|
|
*/
|
|
|
|
using System.ComponentModel;
|
|
|
|
namespace OpenIddict.EntityFramework;
|
|
|
|
/// <inheritdoc/>
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
public sealed class OpenIddictEntityFrameworkContext<TContext> : IOpenIddictEntityFrameworkContext
|
|
where TContext : DbContext
|
|
{
|
|
private readonly TContext? _context;
|
|
|
|
/// <summary>
|
|
/// Creates a new instance of the <see cref="OpenIddictEntityFrameworkContext{TContext}"/> class.
|
|
/// </summary>
|
|
public OpenIddictEntityFrameworkContext()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a new instance of the <see cref="OpenIddictEntityFrameworkContext{TContext}"/> class.
|
|
/// </summary>
|
|
/// <param name="context">The Entity Framework Core context, if available.</param>
|
|
public OpenIddictEntityFrameworkContext(TContext? context) => _context = context;
|
|
|
|
/// <inheritdoc/>
|
|
public ValueTask<DbContext> GetDbContextAsync(CancellationToken cancellationToken)
|
|
{
|
|
if (cancellationToken.IsCancellationRequested)
|
|
{
|
|
return new(Task.FromCanceled<DbContext>(cancellationToken));
|
|
}
|
|
|
|
if (_context is not DbContext context)
|
|
{
|
|
return new(Task.FromException<DbContext>(new InvalidOperationException(SR.GetResourceString(SR.ID0470))));
|
|
}
|
|
|
|
return new(context);
|
|
}
|
|
}
|
|
|