【发布时间】:2017-11-20 22:36:46
【问题描述】:
我创建了一个自定义的IConfigurationDbContext,以便将 IDS4 与 Oracle 一起使用。
public class IdentityConfigurationDbContext : DbContext, IConfigurationDbContext {
private readonly ConfigurationStoreOptions storeOptions;
public IdentityConfigurationDbContext(DbContextOptions<IdentityServerDbContext> options)
: base(options) {
}
public IdentityConfigurationDbContext(DbContextOptions<ConfigurationDbContext> options, ConfigurationStoreOptions storeOptions)
: base(options) {
this.storeOptions = storeOptions ?? throw new ArgumentNullException(nameof(storeOptions));
}
public DbSet<Client> Clients { get; set; }
public DbSet<IdentityResource> IdentityResources { get; set; }
public DbSet<ApiResource> ApiResources { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.ConfigureClientContext(storeOptions);
modelBuilder.ConfigureResourcesContext(storeOptions);
base.OnModelCreating(modelBuilder);
}
}
在配置服务中:
services.AddIdentityServer()
.AddTemporarySigningCredential()
.AddAspNetIdentity<ApplicationUser>();
我也有我的自定义IClientStore,它像这样添加到容器中:
services.AddScoped<IClientStore, ClientStore>();
当我运行 IdentityConfigurationDbContext 迁移时,我收到此错误:
System.InvalidOperationException: No database provider has been configured for this DbContext.
我试过这样做:
services.AddDbContext<IdentityConfigurationDbContext>(builder => builder.UseOracle(connectionString, options => {
options.MigrationsAssembly(migrationsAssembly);
options.MigrationsHistoryTable("EF_MIGRATION_HISTORY");
}));
这是在 IDS4 中使用自定义 dbcontext 的正确方法吗?以及如何解决此问题并完成我的迁移工作?
【问题讨论】:
标签: c# entity-framework asp.net-core asp.net-identity identityserver4