Asp.net core 如何在Asp.Net Core 2中正确注册自定义标识服务器配置DBContext?
我正在尝试从IdentityServer创建自己的ConfigurationDbContextAsp.net core 如何在Asp.Net Core 2中正确注册自定义标识服务器配置DBContext?,asp.net-core,entity-framework-core,asp.net-core-2.0,identityserver4,entity-framework-migrations,Asp.net Core,Entity Framework Core,Asp.net Core 2.0,Identityserver4,Entity Framework Migrations,我正在尝试从IdentityServer创建自己的ConfigurationDbContext public class IdSrvConfigurationDbContext : ConfigurationDbContext<ConfigurationDbContext> { public IdSrvConfigurationDbContext(DbContextOptions<IdSrvConfigurationDbContext> options, Conf
public class IdSrvConfigurationDbContext : ConfigurationDbContext<ConfigurationDbContext>
{
public IdSrvConfigurationDbContext(DbContextOptions<IdSrvConfigurationDbContext> options, ConfigurationStoreOptions storeOptions) : base(options.ChangeOptionsType<ConfigurationDbContext>(), storeOptions)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//mylogic here
base.OnModelCreating(modelBuilder);
}
}
现在,当我尝试在我的项目上运行迁移时,它经历了所有启动逻辑注入,并以以下错误结束:
您需要设置
IdSrvConfigurationDbContext
类型,以期望使用DbContextOptions
。这就是底层ConfigurationDbContext
所期望的类型,也是IdentityServer将要传递的类型
通常,您应该始终使用与上下文匹配的键入的DbContextOptions
。但是当从现有上下文继承时,这可能有点困难。但在这些情况下,您不需要太担心:类型化选项仅用于区分各种配置的选项。因此,只要应用程序中的每个上下文仍然使用单独的类型,就不会有任何问题
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddConfigurationStore(options =>
{
// (DbContextOptionsBuilder) paramBuilder
options.ConfigureDbContext = paramBuilder =>
paramBuilder.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationAssembly));
});