ASP.NET Core-不带构造函数参数的IdentityContext

我正在一个带有多个DbContext的ASP.NET核心项目中,其中一个是Identity Context。

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

  • DbContextOptions选项
  • IOptions operatingStoreOptions

这里有一些代码行可以说明

我在启动时已经注册了ApplicationDbContext

启动

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

ApplicationDbContext

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

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

}

如果我想创建一个新的

ApplicationDbContext ctx = new ApplicationDbContext();

我需要这两个参数...

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

感谢您和最诚挚的问候, 诺埃尔(Noel)

msgl88 回答:ASP.NET Core-不带构造函数参数的IdentityContext

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

 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

本文链接:https://www.f2er.com/2919137.html

大家都在问