This is the codes that I use to set up the identity tables to use int as primary key.
public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User, int> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public byte Level { get; set; }
public DateTime JoinDate { get; set; }
}
public class UserRole : IdentityUserRole<int> { }
public class UserLogin : IdentityUserLogin<int> { }
public class UserClaim : IdentityUserClaim<int> { }
public class Role : IdentityRole<int, UserRole>
{
public Role() { }
public Role(string name) { Name = name; }
}
public class MyUserStore : UserStore<User, Role, int, UserLogin, UserRole, UserClaim>
{
public MyUserStore(MyPortalContext context)
: base(context) { }
}
public class MyRoleStore : RoleStore<Role, int, UserRole>
{
public MyRoleStore(MyPortalContext context)
: base(context) { }
}
/////////////////////////////////////////////////////////
And they are customized to use different table names in MyPortalContext
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<Role>().ToTable("Roles");
modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
modelBuilder.Entity<UserClaim>().ToTable("UserClaims");
modelBuilder.Entity<UserRole>().ToTable("UserRoles");
}
No comments:
Post a Comment