(ASP.NET MVC 5, EF6, VS2013)
Я пытаюсь понять, как изменить тип поля "Id" из строки в int в типе:
Microsoft.AspNet.Identity.EntityFramework.IdentityUser
чтобы новые учетные записи пользователей были связаны с идентификатором целого числа, а не с идентификатором GUID. Но похоже, что это будет сложнее, чем просто добавить новое свойство Id с типом int в моем производном классе пользователя. Взгляните на эту подпись метода:
(из сборки Microsoft.AspNet.Identity.Core.dll)
public class UserManager<TUser> : IDisposable where TUser : global::Microsoft.AspNet.Identity.IUser
{
...
public virtual Task<IdentityResult> AddLoginAsync(string userId, UserLoginInfo login);
...
}
Итак, кажется, что существуют другие методы, запеченные в инфраструктуре идентификации ASP.NET, для которых userId является строкой. Нужно ли мне переопределять эти классы?
Объяснение того, почему я не хочу хранить идентификаторы GUID для идентификаторов в таблице пользователя:
. Будут другие таблицы, которые связывают данные с таблицей пользователей через внешний ключ. (Когда пользователи сохраняют контент на сайте.) Я не вижу причин использовать более широкий тип поля и тратить дополнительное пространство базы данных без явных преимуществ. (Я знаю, что есть другие сообщения об использовании GUID vs int ids, но кажется, что многие считают, что int ids быстрее и используют меньше места, что все еще оставляет мне интересно.)
- Я планирую выставить спокойную конечную точку, чтобы пользователи могли получать данные о конкретном пользователе. Я думаю:
/users/123/name
чище, чем
/users/{af54c891-69ba-4ddf-8cb6-00d368e58d77}/name
Кто-нибудь знает, почему команда ASP.NET решила реализовать идентификаторы таким образом? Я не подозреваю, что пытаюсь изменить это на тип int? (Возможно, есть преимущества, которые мне не хватает.)
Спасибо...
-Бен