我正在使用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的默认模型?另外,我们是否应该尝试扩展这些模型?
我愿意接受任何建议,建议和备选方案 谢谢。
答案 0 :(得分:0)
您可以创建派生类,将RowVersion字段添加到这些字段。您需要创建一个完整的其他数据访问层来读取和写入数据库,因为内置的ConfigurationDbContext无法使用这些派生类。
我可能倾向于创建自己的模型并使用Dapper来实现我自己的管理功能。