【问题标题】:How to Enable Entity Framework Migrations for MembershipReboot如何为 MembershipReboot 启用实体框架迁移
【发布时间】:2016-08-10 20:29:44
【问题描述】:

我们已经实现了 IdentityServer3、MembershipReboot 和 IdentityManager,并将客户端、范围和用户存储在 SqlServer 数据库中。我们还使用 CustomUserAccountService 类在初始数据库创建期间设置了默认用户。现在,我们想向 UserAccount 表添加一个额外的字段,并且不想从头开始重新创建数据库,因此我们希望为 UserAccount 表启用实体框架迁移。 当我们为 IdentityServer 启用 EntityFramework 时,我们使用了以下命令:

Enable-Migrations -MigrationsDirectory Migrations\ClientConfiguration -ContextTypeName ClientConfigurationDbContext -ContextAssemblyName IdentityServer3.EntityFramework -ConnectionStringName IdSvr3AndMembershipReboot

Enable-Migrations -MigrationsDirectory Migrations\ScopeConfiguration -ContextTypeName ScopeConfigurationDbContext -ContextAssemblyName IdentityServer3.EntityFramework -ConnectionStringName IdSvr3AndMembershipReboot

Enable-Migrations -MigrationsDirectory Migrations\OperationalConfiguration -ContextTypeName OperationalDbContext -ContextAssemblyName IdentityServer3.EntityFramework -ConnectionStringName IdSvr3AndMembershipReboot

我们查看了 MembershipReboot,我们看到的 DbContext 称为 MembershipRebootDbContext,所以我们尝试了以下操作:

Enable-Migrations -MigrationsDirectory Migrations\MembRebootConfiguration -ContextTypeName MembershipRebootDbContext -ContextAssemblyName BrockAllen.MembershipReboot.Ef -ConnectionStringName IdSvr3AndMembershipReboot

但是,返回了这个错误:

The context type 'MembershipRebootDbContext' was not found in the assembly 'BrockAllen.MembershipReboot.Ef'

我们对程序集进行了反编译,程序集中肯定有一个具有该名称的类型,但我们认为问题可能在于它是泛型类型,不像 Client、Scope 和 Operational DbContexts,它们不是泛型类型.

是否可以为 MembershipReboot 启用实体框架迁移?需要什么命令?

非常感谢您的帮助!

【问题讨论】:

    标签: membershipreboot


    【解决方案1】:

    我使用具体的 TUserAccount 类创建了通用 MembershipRebootDbContext 的子类。我添加了一个默认构造函数,它将连接字符串名称传递给基本构造函数。

    public class MyMembershipRebootDbContext : MembershipRebootDbContext<User>
    {
        public MyMembershipRebootDbContext() : base("IdentityServerMembershipDb") {}
    
        public MyMembershipRebootDbContext(string name)
            : base(name) {}
    }
    

    完成后,您应该能够按如下方式创建迁移:

    Enable-Migrations -MigrationsDirectory Migrations\MembRebootConfiguration -ContextTypeName MyMembershipRebootDbContext -StartUpProjectName MyProject -ProjectName MyProject -ConnectionStringName IdSvr3AndMembershipReboot
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-13
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多