From 0bf7ff24185891ad41ea11b0572e79b35cb2b370 Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Mon, 18 Apr 2016 14:51:13 -0700 Subject: [PATCH] Add Unique constraint to user name index by default. --- .../IdentityDbContext.cs | 2 +- .../SqlStoreTestBase.cs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/IdentityDbContext.cs b/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/IdentityDbContext.cs index fc063ec062..038587f329 100644 --- a/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/IdentityDbContext.cs +++ b/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/IdentityDbContext.cs @@ -116,7 +116,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore builder.Entity(b => { 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.ToTable("AspNetUsers"); b.Property(u => u.ConcurrencyStamp).IsConcurrencyToken(); diff --git a/test/Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test/SqlStoreTestBase.cs b/test/Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test/SqlStoreTestBase.cs index a657fb9f2a..67dde7bded 100644 --- a/test/Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test/SqlStoreTestBase.cs +++ b/test/Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test/SqlStoreTestBase.cs @@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore.Test Assert.True(VerifyColumns(db, "AspNetUserTokens", "UserId", "LoginProvider", "Name", "Value")); VerifyIndex(db, "AspNetRoles", "RoleNameIndex"); - VerifyIndex(db, "AspNetUsers", "UserNameIndex"); + VerifyIndex(db, "AspNetUsers", "UserNameIndex", isUnique: true); VerifyIndex(db, "AspNetUsers", "EmailIndex"); 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 ( var command = 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("Table", table)); + command.Parameters.Add(new SqlParameter("Unique", isUnique)); using (var reader = command.ExecuteReader()) { Assert.True(reader.Read());