首页 > 解决方案 > ASP.NET Core - 没有构造函数参数的 IdentityContext

问题描述

我正在开发一个带有多个 DbContexts 的 ASP.NET 核心项目,其中一个是身份上下文。

我将 Tao Zhou 的(Aspnet core Identity custom ApiAuthorizationDbContext)解决方案应用于一个问题,这首先解决了我的问题,但现在我遇到了无法创建没有参数的 ApplicationDbContext 的问题。

这里有几行代码来说明它

我在 Startup 中注册了 ApplicationDbContext

启动

services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("IdentityConnection"))
       );

应用程序数据库上下文

    public class ApplicationDbContext : KeyApiAuthorizationDbContext<Identity.AspNetUsers, Identity.AspNetRoles, Guid>

    public ApplicationDbContext(DbContextOptions options,
                        IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
{

}

如果我想创建一个新的

ApplicationDbContext ctx = new ApplicationDbContext();

我需要这两个参数...

如果有人能给我一个提示,那就太好了。

谢谢你和最好的问候,诺埃尔

标签: asp.net-coreasp.net-identityidentityserver4dbcontextef-core-3.0

解决方案


尝试修改上下文类,如下例所示:

 public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {

    }

    // C# will call base class parameterless constructor by default
    public ApplicationDbContext()
    { }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        IConfigurationRoot configuration = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json")
        .Build();
        optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
    }
}

参考 :

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dbcontext-creation#using-a-constructor-with-no-parameters

https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext#onconfiguring


推荐阅读