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 =>
{
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();

View File

@ -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());