Versatile OpenID Connect stack for ASP.NET Core and Microsoft.Owin (compatible with ASP.NET 4.6.1)
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

/*
* 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);
}
}