如何为MembershipReboot启用实体框架迁移

时间:2016-08-10 20:29:44

标签: membershipreboot

我们已经实现了IdentityServer3,MembershipReboot和IdentityManager,并将客户端,范围和用户存储在SqlServer数据库中。我们还使用CustomUserAccountService类在初始数据库创建期间设置了默认用户。现在,我们想要向UserAccount表添加一个额外的字段,并且不希望从头开始重新创建数据库,因此我们希望为UserAccount表启用Entity Framework迁移。 当我们为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启用Entity Framework迁移?需要什么命令?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我使用具体的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