A few steps:
- Install NuGet Package:
Microsoft.AspNet.Identity.EntityFramework - Add
connection string to your web.config / app.config file
Now you should define your custom 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"); } }
As you can see, I used DbModelBuilder to map all objects to new tables.
- Open NuGet Package Manager Console
- Run the
Enable-Migrations command
It will create a Migrations folder with the Configuration.cs configuration file.
It should look something like this:
internal sealed class Configuration : DbMigrationsConfiguration<ConsoleApplication1.Models.MyContext> { public Configuration() { AutomaticMigrationsEnabled = false; } protected override void Seed(ConsoleApplication1.Models.MyContext context) { } }
In the constructor, change the AutomaticMigrationsEnabled property to true .
- Open NuGet Package Manager Console
- Run the
Update-Database Command
It should run a script to create new tables.
You can customize your entities (and identifiers) by creating your own class for each specific interface.
public class MyUser : IdentityUser<string, MyUserLogin, MyUserRole, MyUserClaim> { }
Since you are using Owin, you can define your UserStore:
public class MyUserStore: UserStore<MyUser, MyRole, string, MyUserLogin, MyUserRole, MyUserClaim> { public MyUserStore(MyContext context) : base(context) { } }
and your UserManager implementation:
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); } }
And your Owin.Startup should look something like this:
public class Startup { public void Configuration(IAppBuilder app) { app.CreatePerOwinContext(MyContext.Create); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); } }
If you want to take a look at a custom implementation, you can check out my GitHub repository with a simple working solution on ASP.NET MVC.
UPDATE:
In this solution, there is another project with minimal setup; basically you need to define your context ( IdentityDbContext ) if you only want to rename your tables.
The project can be found here .