Non esiste alcuna conversione implicita dei riferimenti da ApplicationUser a IdentityUser

asp.net-identity c# entity-framework-6 entity-framework-core generics

Domanda

Sto cercando di personalizzare alcune classi di Identity Core di ASP.NET che usano Generics.

La mia classe ApplicationUser:

public class ApplicationUser : IdentityUser<Guid>//, ApplicationUserClaim, ApplicationRole, ApplicationUserLogin> 
{
    public ApplicationUser() {  }
}

La mia classe ApplicationUserStore:

public class ApplicationUserStore : UserStore<ApplicationUser, ApplicationRole, ApplicationDbContext, Guid> 
{
    public ApplicationUserStore(ApplicationDbContext ctx, IdentityErrorDescriber describer = null) : base(ctx, describer)
    {

    }
}

Il messaggio di errore è:

'AspDotNetCoreFullFramework.Identity. ApplicationUser 1[System.Guid]', on Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`8 [TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken]' viola il vincolo del parametro di tipo 'TUser'

Ora, quando vado all'implementazione .NET di UserStore (classe Base):

UserStore di classe pubblica <TUser, TRole, TContext, TKey>: UserStore <TUser, TRole, TContext, TKey, IdentityUserClaim <TKey>, IdentityUserRole <TKey>, IdentityUserLogin <TKey>, IdentityUserToken <TKey >>
dove TUser: IdentityUser <TKey>
... dove TKey: IEquatable <TKey> {

Posso vedere che ApplicationUser eredita da IdentityUser <GUID>. Questo vincolo è soddisfatto. TKey è GUID che implementa <GUID> IEquatable. Anche questo vincolo è soddisfatto.

Quindi qual'è il problema?

Risposta accettata

Aggiungere il GUID a

IdentityBuilder.AddEntityFrameworkStores<ApplicationDbContext,Guid>();

come accennato in questo post risolto il problema.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché