【问题标题】:IdentityServer4 with a customise ConfigurationDBContext带有自定义 ConfigurationDBContext 的 IdentityServer4
【发布时间】:2017-03-01 12:29:50
【问题描述】:

如果我自定义 ConfigurationDBContext 可以吗?我已经创建了一个,代码如下

public class MyConfigurationDbContext : ConfigurationDbContext
{    
        public MyConfigurationDbContext(DbContextOptions<ConfigurationDbContext> options, 
                ConfigurationStoreOptions storeOptions)
                : base(options, storeOptions)
        {                
        }
}

我注意到 ConfigurationDBContext 需要特殊的 DbContextOptions

DbContextOptions<ConfigurationDbContext>

我现在有点困惑。在我走得更远之前,我只想检查以前有人做过吗?或者,如果有人可以指出有关此的项目或教程。

【问题讨论】:

  • MJK,这个运气好吗?
  • 是的,我已经实现并添加了另外两个实体。大多数时候,我只是传递新初始化的对象。
  • 我可以分享您如何实现自定义 ConfigurationDbContext 的答案吗?我收到此错误:在“IdentityConfigurationDbContext”上找不到无参数构造函数。将无参数构造函数添加到“IdentityConfigurationDbContext”或在与“IdentityConfigurationDbContext”相同的程序集中添加“IDbContextFactory”的实现。
  • 什么时候出现错误?你为什么不在 StackOverflow 中用你的代码提问呢?如果您可以在此处添加链接,我可以尝试一下。欢呼

标签: entity-framework-core dbcontext identityserver4


【解决方案1】:

IConfigurationDbContext的定义来自IdentityServer4.EntityFramework

public interface IConfigurationDbContext : IDisposable
{
    DbSet<Client> Clients { get; set; }
    DbSet<IdentityResource> IdentityResources { get; set; }
    DbSet<ApiResource> ApiResources { get; set; }

    int SaveChanges();
    Task<int> SaveChangesAsync();
}

此接口允许开发人员自定义上下文。如果你不想继承ConfigurationDbContext(绑定到Ef.Core.DbContext),你可以构建自己的IConfigurationDbContext实现,只需要添加IDbContextFactory&lt;MyConfigurationDbContext&gt;

public class IdentityConfigurationDbContextFactory : IDbContextFactory<MyConfigurationDbContext>
{
    public MyConfigurationDbContext Create(DbContextFactoryOptions options)
    {
        //....
    }
}

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 2019-07-02
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多