Add Unique constraint to user name index by default.

This commit is contained in:
Hao Kung 2016-04-18 14:51:13 -07:00
parent 67b0bc68dc
commit 0bf7ff2418
2 changed files with 5 additions and 4 deletions

View File

@ -116,7 +116,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore
builder.Entity<TUser>(b => builder.Entity<TUser>(b =>
{ {
b.HasKey(u => u.Id); b.HasKey(u => u.Id);
b.HasIndex(u => u.NormalizedUserName).HasName("UserNameIndex"); b.HasIndex(u => u.NormalizedUserName).HasName("UserNameIndex").IsUnique();
b.HasIndex(u => u.NormalizedEmail).HasName("EmailIndex"); b.HasIndex(u => u.NormalizedEmail).HasName("EmailIndex");
b.ToTable("AspNetUsers"); b.ToTable("AspNetUsers");
b.Property(u => u.ConcurrencyStamp).IsConcurrencyToken(); b.Property(u => u.ConcurrencyStamp).IsConcurrencyToken();

View File

@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test
Assert.True(VerifyColumns(db, "AspNetUserTokens", "UserId", "LoginProvider", "Name", "Value")); Assert.True(VerifyColumns(db, "AspNetUserTokens", "UserId", "LoginProvider", "Name", "Value"));
VerifyIndex(db, "AspNetRoles", "RoleNameIndex"); VerifyIndex(db, "AspNetRoles", "RoleNameIndex");
VerifyIndex(db, "AspNetUsers", "UserNameIndex"); VerifyIndex(db, "AspNetUsers", "UserNameIndex", isUnique: true);
VerifyIndex(db, "AspNetUsers", "EmailIndex"); VerifyIndex(db, "AspNetUsers", "EmailIndex");
db.Close(); db.Close();
} }
@ -146,15 +146,16 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test
} }
} }
internal static void VerifyIndex(SqlConnection conn, string table, string index) internal static void VerifyIndex(SqlConnection conn, string table, string index, bool isUnique = false)
{ {
using ( using (
var command = var command =
new SqlCommand( new SqlCommand(
"SELECT COUNT(*) FROM sys.indexes where NAME=@Index AND object_id = OBJECT_ID(@Table)", conn)) "SELECT COUNT(*) FROM sys.indexes where NAME=@Index AND object_id = OBJECT_ID(@Table) AND is_unique = @Unique", conn))
{ {
command.Parameters.Add(new SqlParameter("Index", index)); command.Parameters.Add(new SqlParameter("Index", index));
command.Parameters.Add(new SqlParameter("Table", table)); command.Parameters.Add(new SqlParameter("Table", table));
command.Parameters.Add(new SqlParameter("Unique", isUnique));
using (var reader = command.ExecuteReader()) using (var reader = command.ExecuteReader())
{ {
Assert.True(reader.Read()); Assert.True(reader.Read());