我創建了自定義的IConfigurationDbContext
以便將IDS4與Oracle結合使用。使用IdentityServer4進行自定義Configration DBContext
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);
}
}
在ConfigureService:
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的正確方法?以及如何解決此問題,並完成我的遷移工作?
我這樣做,但在遷移過程中得到這個錯誤:沒有參數的構造函數是在「IdentityConfigurationDbContext」找到。可以在'IdentityConfigurationDbContext'中添加無參數構造函數,或者在與'IdentityConfigurationDbContext'相同的程序集中添加'IDbContextFactory的實現。 –
capiono
即使你繼承** ConfigurationDbContext ** – MJK
是的,我還添加了一個無參數的構造函數相同的東西。 – capiono