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 =>