Как изменить тип идентификатора в Microsoft.AspNet.Identity.EntityFramework.IdentityUser
(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 против идентификаторов int, но многие, похоже, предполагают, что идентификаторы int быстрее и занимают меньше места, что вызывает у меня удивление.)
-Я планирую выставить спокойную конечную точку, чтобы пользователи могли получать данные о конкретном пользователе. Думаю:
/users/123/name
чище чем
/users/{af54c891-69ba-4ddf-8cb6-00d368e58d77}/name
Кто-нибудь знает, почему команда ASP.NET решила реализовать идентификаторы таким образом? Я недальновиден в попытке изменить это на тип int? (Возможно, есть преимущества, которые я пропускаю.)
Спасибо...
-Бен