默认情况下,Identity Server 4 的表架构是 dbo
,我想将其更改为安全性,因此我创建了继承自 ConfigurationDbContext
的 ConfigurationContext
>:
public class ConfigurationContext : ConfigurationDbContext
{
public ConfigurationContext(DbContextOptions<ConfigurationDbContext> options, ConfigurationStoreOptions storeOptions) : base(options, storeOptions)
{ }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.HasDefaultSchema("Security");
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var relationalOptions = RelationalOptionsExtension.Extract(optionsBuilder.Options);
relationalOptions.MigrationsHistoryTableSchema = "Security";
}
}
在 add-migration
中我使用 ConfigurationContext
:
Add-Migration -c ConfigurationContext
但是我得到了这个错误:
No parameterless constructor was found on 'ConfigurationContext'. Either add a parameterless constructor to 'ConfigurationContext' or add an implementation of 'IDbContextFactory' in the same assembly as 'ConfigurationContext'.
问题是什么?
最佳答案
IdentityServer4 提供了这个选项。在 ConfigureServices
中,
services.AddIdentityServer()
.AddOperationalStore(builder => builder.UseSqlServer(cnStr, options =>
options.MigrationsAssembly(migAssembly)),
storeOption => storeOption.DefaultSchema = "security")
这样,您就可以按照快速入门中的建议继续使用 IDbContextFactory
。
关于entity-framework - 如何更改表的 Identity Server 4 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276628/