我正在查看新的 ASP.NET Identity 类的接口以及它使用 Entity Framework Code First 创建的数据库。我正在使用 Visual Studio 2013 RC。
乍一看,数据库模式看起来相当正常:
但是所有的键都是 NVARCHAR(128)
出于某种疯狂的原因AspNetUserSecrets.Id
,PK 看起来可能指向AspNetUsers
表格中的多个记录。这是否意味着多个AspNetUsers
必须共享相同的密码?
当我查看查看您被迫实现的接口时,这些都是字符串...
public class User : IUser
{
public string Id { get; set; }
public string UserName { get; set; }
}
public class UserSecret : IUserSecret
{
public string UserName { get; set; }
public string Secret { get; set; }
}
public class UserRole : IUserRole
{
public string UserId { get; set; }
public string RoleId { get; set; }
}
public class UserClaim : IUserClaim
{
public string UserId { get; set; }
public string ClaimType { get; set; }
public string ClaimValue { get; set; }
}
public class UserManagement : IUserManagement
{
public string UserId { get; set; }
public bool DisableSignIn { get; set; }
public DateTime LastSignInTimeUtc { get; set; }
}
public class Tokens : IToken
{
public string Id { get; set; }
public string Value { get; set; }
public DateTime ValidUntilUtc { get; set; }
}
public class UserLogin : IUserLogin
{
public string UserId { get; set; }
public string LoginProvider { get; set; }
public string ProviderKey { get; set; }
}
public class Role : IRole
{
public string Id { get; set; }
public string Name { get; set; }
}
所以我开始接受这样一个事实,即我可能必须使用字符串来实现 PK 和 FK 关系。
但我真的很想知道为什么它是这样建造的......?
编辑:时间已经过去,现在有关于如何扩展 asp.net 身份以使用 int(或 guid)字段的文章:
http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity