要遵循的几个步骤:
- 安装 NuGet 包:
Microsoft.AspNet.Identity.EntityFramework
- 添加
connection string
到您的 web.config/app.config
现在你必须定义你的自定义Database Context
:
public class MyContext : IdentityDbContext
{
public MyContext()
: base(<connection string name>)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>()
.ToTable("Users");
modelBuilder.Entity<IdentityRole>()
.ToTable("Roles");
modelBuilder.Entity<IdentityUserRole>()
.ToTable("UserRoles");
modelBuilder.Entity<IdentityUserClaim>()
.ToTable("UserClaims");
modelBuilder.Entity<IdentityUserLogin>()
.ToTable("UserLogins");
}
}
如您所见,我习惯DbModelBuilder
将所有实体映射到新表。
- 打开 NuGet 包管理器控制台
- 执行命令
Enable-Migrations
它将Migrations
使用配置文件创建一个文件夹Configuration.cs
。
它应该看起来像这样:
internal sealed class Configuration : DbMigrationsConfiguration<ConsoleApplication1.Models.MyContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(ConsoleApplication1.Models.MyContext context)
{
}
}
在构造函数中将属性更改AutomaticMigrationsEnabled
为true
.
- 打开 NuGet 包管理器控制台
- 执行命令
Update-Database
它应该运行脚本来创建新表。
您可以自定义您的实体(和 Id),为定义的每个接口创建自定义类。
public class MyUser : IdentityUser<string, MyUserLogin, MyUserRole, MyUserClaim>
{
}
由于您使用的是 Owin,因此您可以定义您的 UserStore:
public class MyUserStore: UserStore<MyUser, MyRole, string, MyUserLogin, MyUserRole, MyUserClaim>
{
public MyUserStore(MyContext context)
: base(context)
{
}
}
和你的 UserManager 实现:
public class ApplicationUserManager : UserManager<ASPNETIdentity2.Models.MyUser, string>
{
public ApplicationUserManager(IUserStore<ASPNETIdentity2.Models.MyUser, string> store)
: base(store)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new MyUserStore(context.Get<MyContext>()));
manager.UserValidator = new UserValidator<MyUser, string>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
manager.PasswordValidator = new PasswordValidator()
{
RequiredLength = 5,
RequireNonLetterOrDigit = false, // true
// RequireDigit = true,
RequireLowercase = false,
RequireUppercase = false,
};
return (manager);
}
}
你Owin.Startup
应该看起来像这样:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.CreatePerOwinContext(MyContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
}
}
如果您想查看自定义实现,可以使用 ASP.NET MVC 上的简单工作解决方案查看我的GitHub 存储库。
更新:
该解决方案中有另一个项目,设置最少;基本上,如果您只想重命名表,您只需要定义您的上下文(IdentityDbContext )。
该项目可以在这里找到。