Я просматриваю интерфейсы на новых классах ASP.NET Identity и базу данных, которую он создает, используя Entity Framework Code First. Я использую Visual Studio 2013 RC.
На первый взгляд схема базы данных выглядит достаточно нормально:
Но все ключи: NVARCHAR (128)
И по какой-то сумасшедшей причине AspNetUserSecrets.Id
- это ПК, который выглядит так, как будто он может указывать на несколько записей в таблице 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.
Но мне очень хотелось бы знать, ПОЧЕМУ он построен так...?
EDIT: прошло время, и теперь есть статьи о том, как расширить идентификатор asp.net для использования полей int (или guid):
http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity