扩展Entity Framework:向IdentiyServer4客户端表添加列

3

我有一个DbContext是Identityserver4的一部分,我对entity-framework非常新手。

namespace IdentityServer4.EntityFramework.DbContexts 
{
public class ConfigurationDbContext : DbContext, IConfigurationDbContext, IDisposable
{
    public ConfigurationDbContext(DbContextOptions<ConfigurationDbContext> options, ConfigurationStoreOptions storeOptions);

    public DbSet<Client> Clients { get; set; }
    public DbSet<IdentityResource> IdentityResources { get; set; }
    public DbSet<ApiResource> ApiResources { get; set; }

    public Task<int> SaveChangesAsync();
    protected override void OnModelCreating(ModelBuilder modelBuilder);
}
}

namespace IdentityServer4.EntityFramework.Entities
{
public class Client
{
 // I want to add a column here
 ................

}

事情是我想扩展客户端类,它基本上是数据库中的客户端表,并添加一个新列。这是否可能?
由于它们是Identityserver4 dll的一部分,我不允许编辑这些文件。我唯一能想到的就是创建自己的db上下文并复制IdentityServer的内容,但这似乎有点过度,而且我不确定IdentityServer是否能够从新表中读取。
问题所在的列是我试图添加到Client表中的应用程序ID,该ID标识正在使用客户端的第三方开发人员。我们需要能够在出现问题或行为不当的情况下与他们联系。在最坏的情况下,禁止行为不当的开发人员。

如果这些属性将被存储在数据库中,那么您可以:1-创建一个与客户主键相关的新实体并手动检索它,或者2-下载IdentityServer4的源代码并根据您的需求进行修改。 - Gusman
你所说的实体是指DbContext吗?我认为这个点是只在应用程序中有一个。不想fork Identityserver4 我希望只需向客户端表添加另一列,而不是创建一个新的引用表。 - Linda Lawton - DaImTo
一个实体是一个模型,Client 是一个实体。此外,DbContext 应该被用于创建和销毁,每次需要一个实例时都要创建一个新的 DbContext,而且你可以根据需要拥有多个 DbContext 类型。 - Gusman
将这些信息作为客户声明表中的声明添加,而不是扩展客户表,这不是一个选项吗? - user4864425
我不是指额外的列。如果您使用Ids4提供的存储,则会有一个名为ClientClaims的表。您可以在该表中插入记录以存储信息。 - user4864425
显示剩余4条评论
1个回答

4

很遗憾,我不能使用这个,因为它似乎是身份验证服务器2.0升级的一部分。我将需要在不久的将来应用此升级。 - Linda Lawton - DaImTo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接