Como alterar o tipo de identificação no Microsoft.AspNet.Identity.EntityFramework.IdentityUser

(ASP.NET MVC 5, EF6, VS2013)

Eu estou tentando descobrir comoalterar o tipo do campo "Id" da string para int no tipo:

Microsoft.AspNet.Identity.EntityFramework.IdentityUser

para que novas contas de usuário sejam associadas a um ID inteiro em vez de um GUID. Mas parece que isso será mais complicado do que simplesmente adicionar uma nova propriedade Id com o tipo int na minha classe de usuário derivada. Dê uma olhada nesta assinatura do método:

(do Assembly 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);
  ...
  }

Portanto, parece que existem outros métodos integrados à estrutura de identidade do ASP.NET, que exigem que o userId seja uma string. Eu precisaria reimplementar essas classes também?

Uma explicação de por que não quero armazenar os GUIDs para IDs na tabela de usuários:

- Haverá outras tabelas que relacionam dados à tabela de usuários por meio de uma chave estrangeira. (Quando os usuários salvam conteúdo no site.) Não vejo razão para usar o tipo de campo maior e gastar espaço extra no banco de dados sem vantagens claras. (Eu sei que existem outros posts sobre o uso de GUIDs vs int ids, mas parece que muitos sugerem que os ids são mais rápidos e usam menos espaço, o que ainda me deixa pensando.)

-Eu pretendo expor um ponto de extremidade restful para permitir que os usuários recuperem dados sobre um determinado usuário. Eu acho que:

/users/123/name

é mais limpo do que

/users/{af54c891-69ba-4ddf-8cb6-00d368e58d77}/name

Alguém sabe por que a equipe do ASP.NET decidiu implementar IDs dessa maneira? Estou sendo míope tentando mudar isso para um tipo int? (Talvez haja benefícios que estão faltando.)

Obrigado...

-Ben

questionAnswers(5)

yourAnswerToTheQuestion