diff --git a/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj b/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj index 47d0ed0c24..7920421550 100644 --- a/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj +++ b/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj @@ -13,6 +13,13 @@ true + + + + + + + PreserveNewest diff --git a/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/20180313083424_IdentityUser_Added_Indexes.Designer.cs b/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/20180313083424_IdentityUser_Added_Indexes.Designer.cs new file mode 100644 index 0000000000..71b187f28a --- /dev/null +++ b/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/20180313083424_IdentityUser_Added_Indexes.Designer.cs @@ -0,0 +1,272 @@ +// +using MicroserviceDemo.Web.Db; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using System; + +namespace MicroserviceDemo.Web.Migrations +{ + [DbContext(typeof(MigrationDbContext))] + [Migration("20180313083424_IdentityUser_Added_Indexes")] + partial class IdentityUser_Added_Indexes + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.1-rtm-125") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ConcurrencyStamp"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256); + + b.Property("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("IdentityRoles"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256); + + b.Property("ClaimValue") + .HasMaxLength(1024); + + b.Property("RoleId"); + + b.Property("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("IdentityRoleClaims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("ConcurrencyStamp") + .IsRequired() + .HasMaxLength(256); + + b.Property("Email") + .HasColumnName("Email") + .HasMaxLength(256); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("EmailConfirmed") + .HasDefaultValue(false); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasDefaultValue(false); + + b.Property("LockoutEnd"); + + b.Property("NormalizedEmail") + .HasMaxLength(256); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256); + + b.Property("PasswordHash") + .HasMaxLength(256); + + b.Property("PhoneNumber") + .HasColumnName("PhoneNumber") + .HasMaxLength(16); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("PhoneNumberConfirmed") + .HasDefaultValue(false); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256); + + b.Property("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasDefaultValue(false); + + b.Property("UserName") + .IsRequired() + .HasColumnName("UserName") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("IdentityUsers"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256); + + b.Property("ClaimValue") + .HasMaxLength(1024); + + b.Property("TenantId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("IdentityUserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId"); + + b.Property("LoginProvider") + .HasMaxLength(64); + + b.Property("ProviderDisplayName") + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196); + + b.Property("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("IdentityUserLogins"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId"); + + b.Property("RoleId"); + + b.Property("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("IdentityUserRoles"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId"); + + b.Property("LoginProvider") + .HasMaxLength(128); + + b.Property("Name"); + + b.Property("TenantId"); + + b.Property("Value"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("IdentityUserTokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole") + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/20180313083424_IdentityUser_Added_Indexes.cs b/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/20180313083424_IdentityUser_Added_Indexes.cs new file mode 100644 index 0000000000..131084362c --- /dev/null +++ b/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/20180313083424_IdentityUser_Added_Indexes.cs @@ -0,0 +1,33 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace MicroserviceDemo.Web.Migrations +{ + public partial class IdentityUser_Added_Indexes : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateIndex( + name: "IX_IdentityUsers_Email", + table: "IdentityUsers", + column: "Email"); + + migrationBuilder.CreateIndex( + name: "IX_IdentityUsers_UserName", + table: "IdentityUsers", + column: "UserName"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_IdentityUsers_Email", + table: "IdentityUsers"); + + migrationBuilder.DropIndex( + name: "IX_IdentityUsers_UserName", + table: "IdentityUsers"); + } + } +} diff --git a/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/MigrationDbContextModelSnapshot.cs b/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/MigrationDbContextModelSnapshot.cs index a171a18214..3f0495a8e1 100644 --- a/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/MigrationDbContextModelSnapshot.cs +++ b/src/MicroserviceDemo/MicroserviceDemo.Web/Migrations/MigrationDbContextModelSnapshot.cs @@ -4,6 +4,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; using System; namespace MicroserviceDemo.Web.Migrations @@ -79,10 +81,12 @@ namespace MicroserviceDemo.Web.Migrations .HasMaxLength(256); b.Property("Email") + .HasColumnName("Email") .HasMaxLength(256); b.Property("EmailConfirmed") .ValueGeneratedOnAdd() + .HasColumnName("EmailConfirmed") .HasDefaultValue(false); b.Property("LockoutEnabled") @@ -102,10 +106,12 @@ namespace MicroserviceDemo.Web.Migrations .HasMaxLength(256); b.Property("PhoneNumber") + .HasColumnName("PhoneNumber") .HasMaxLength(16); b.Property("PhoneNumberConfirmed") .ValueGeneratedOnAdd() + .HasColumnName("PhoneNumberConfirmed") .HasDefaultValue(false); b.Property("SecurityStamp") @@ -120,14 +126,19 @@ namespace MicroserviceDemo.Web.Migrations b.Property("UserName") .IsRequired() + .HasColumnName("UserName") .HasMaxLength(256); b.HasKey("Id"); + b.HasIndex("Email"); + b.HasIndex("NormalizedEmail"); b.HasIndex("NormalizedUserName"); + b.HasIndex("UserName"); + b.ToTable("IdentityUsers"); }); diff --git a/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContext.cs b/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContext.cs index 03b5dea2af..c9bc93c519 100644 --- a/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContext.cs +++ b/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContext.cs @@ -62,6 +62,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); + builder.ConfigureAbpIdentity(TablePrefix, Schema); } } diff --git a/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs b/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs index 8c17c715d8..73182b491b 100644 --- a/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs +++ b/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs @@ -17,20 +17,22 @@ namespace Volo.Abp.Identity.EntityFrameworkCore tablePrefix = ""; } + //TODO: Set column names for all EF Core mappings as did for some of the user properties below (this is needed for table splitting scenario): + builder.Entity(b => { b.ToTable(tablePrefix + "Users", schema); - - b.Property(u => u.UserName).IsRequired().HasMaxLength(IdentityUserConsts.MaxUserNameLength); + + b.Property(u => u.UserName).IsRequired().HasMaxLength(IdentityUserConsts.MaxUserNameLength).HasColumnName("UserName"); b.Property(u => u.NormalizedUserName).IsRequired().HasMaxLength(IdentityUserConsts.MaxNormalizedUserNameLength); - b.Property(u => u.Email).HasMaxLength(IdentityUserConsts.MaxEmailLength); + b.Property(u => u.Email).HasMaxLength(IdentityUserConsts.MaxEmailLength).HasColumnName("Email"); b.Property(u => u.NormalizedEmail).HasMaxLength(IdentityUserConsts.MaxNormalizedEmailLength); - b.Property(u => u.PhoneNumber).HasMaxLength(IdentityUserConsts.MaxPhoneNumberLength); + b.Property(u => u.PhoneNumber).HasMaxLength(IdentityUserConsts.MaxPhoneNumberLength).HasColumnName("PhoneNumber"); b.Property(u => u.PasswordHash).HasMaxLength(IdentityUserConsts.MaxPasswordHashLength); b.Property(u => u.SecurityStamp).IsRequired().HasMaxLength(IdentityUserConsts.MaxSecurityStampLength); b.Property(u => u.ConcurrencyStamp).IsRequired().HasMaxLength(IdentityUserConsts.MaxConcurrencyStampLength); - b.Property(u => u.EmailConfirmed).HasDefaultValue(false); - b.Property(u => u.PhoneNumberConfirmed).HasDefaultValue(false); + b.Property(u => u.EmailConfirmed).HasDefaultValue(false).HasColumnName("EmailConfirmed"); + b.Property(u => u.PhoneNumberConfirmed).HasDefaultValue(false).HasColumnName("PhoneNumberConfirmed"); b.Property(u => u.TwoFactorEnabled).HasDefaultValue(false); b.Property(u => u.LockoutEnabled).HasDefaultValue(false); b.Property(u => u.AccessFailedCount).HasDefaultValue(0); @@ -42,6 +44,8 @@ namespace Volo.Abp.Identity.EntityFrameworkCore b.HasIndex(u => u.NormalizedUserName); b.HasIndex(u => u.NormalizedEmail); + b.HasIndex(u => u.UserName); + b.HasIndex(u => u.Email); }); builder.Entity(b =>