我正在开发一个 ASP.NET 核心项目,其中包含多个 DbContext,其中一个是 Identity Context。
我将 Tao Zhou(Aspnet 核心身份自定义 ApiAuthorizationDbContext(解决方案应用于一个问题,这首先解决了我的问题,但现在我遇到了一个问题,即我无法在没有参数的情况下创建 ApplicationDbContext。
- 数据库上下文选项选项
- IOptions operationsStoreOptions
这里有几行编码来说明它
我在启动中注册了应用程序数据库上下文
启动
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();
我需要这两个参数...
如果有人能给我一个提示,那就太好了。
谢谢你和最好的问候, 圣诞颂歌
尝试修改上下文类,如以下示例所示:
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://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/dbcontext-creation#using-a-constructor-with-no-parameters
https://learn.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext#onconfiguring