我可以扩展IdentityServer 4模型吗?

时间:2017-09-12 14:41:47

标签: entity-framework asp.net-core entity-framework-core identityserver4

我正在使用ASP.Net Core和Identity Server 4开发一个项目。该项目使用Entity Framework Core来存储Identity Server模型。

Identity Server生成自己的DbContexts(ConfigurationDbContext和PersistedGrantsDbContext),这些上下文将注入项目的Startup文件中,如下所示:

Startup.cs

var identityServer =  services.AddIdentityServer()
            .AddTemporarySigningCredential()
            .AddConfigurationStore(builder => builder.UseSqlServer(connectionString,
                options => options.MigrationsAssembly(migrationsAssembly)))
            .AddOperationalStore(builder => builder.UseSqlServer(connectionString,
                options => options.MigrationsAssembly(migrationsAssembly)))
            .AddAspNetIdentity<ApplicationUser>()
            .AddProfileService<IdentityProfileService>();

出于项目的目的,我们所有模型都使用行版本属性,以便在更新期间捕获任何并发问题。

模型中的属性定义

     /// <summary>
    /// Concurrency stamp for model
    /// </summary>
    [Timestamp]
    public byte[] RowVersion { get; set; }

问题是,我们如何扩展IdentityServer 4的默认模型?另外,我们是否应该尝试扩展这些模型?

我愿意接受任何建议,建议和备选方案 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以创建派生类,将RowVersion字段添加到这些字段。您需要创建一个完整的其他数据访问层来读取和写入数据库,因为内置的ConfigurationDbContext无法使用这些派生类。

我可能倾向于创建自己的模型并使用Dapper来实现我自己的管理功能。