Hériter de IdentityUser j'obtiens une erreur sur UserManager<Utilisateur>
Je suis le développement d'une Api Web 2.2 application .NET Framework 4.5.1 et Asp.Net l'Identité 2.1.0.
Je ne suis pas sûr de ce que je fais, mais je souhaite joindre ma base de données avec ASP.NET base de données d'Identité et je l'ai fait:
Mon propre dbContext
.
public class EFDbContext : IdentityDbContext, IUnitOfWork
Mon propre User
classe.
public class User :
IdentityUser<long,
IdentityUserLogin<long>,
IdentityUserRole<long>,
IdentityUserClaim<long>
>
Mais quand je fais ceci:
UserManager<User> _userManager;
J'obtiens cette erreur:
Le type Data.Models.User
ne peut pas être utilisé comme paramètre de type TUser
. Il n'y a pas de conversion explicite de Data.Models.User
à Microsoft.AspNet.Identity.IUser<string>
.
Je fais cela parce que je veux avoir IdentityUser.Id
comme long
au lieu de string
.
Comment puis-je corriger cette erreur?
Mise à JOUR
Après la mise à jour UserManager avec:
UserManager<User, long> _userManager;
- Je obtenir les trois erreurs ici:
EFDbContext_ctx = context as EFDbContext;
_userManager = new UserManager<User, long>(new UserStore<User>(_ctx));
- Le meilleur match de surcharge de la méthode pour 'Microsoft.AspNet.L'identité.UserManager.UserManager (Microsoft.AspNet.L'identité.IUserStore )' a certains arguments invalides-
- Le type de Données.Modèles.Utilisateur " ne peut pas être utilisé comme paramètre de type 'TUser' type ou une méthode générique
"Microsoft.AspNet.L'identité.EntityFramework.UserStore '. Il n'y a pas de conversion de référence implicite à partir de Données.Modèles.L'utilisateur' à 'Microsoft.AspNet.L'identité.EntityFramework.IdentityUser'.- Argument 1: impossible de convertir de 'Microsoft.AspNet.L'identité.EntityFramework.UserStore' à 'Microsoft.AspNet.L'identité.IUserStore'
Comment puis-je corriger cette erreur du nouveau?
UserManager
? Veuillez voir ma question sur stackoverflow.com/questions/31024859/...OriginalL'auteur VansFannel | 2014-11-14
Vous devez vous connecter pour publier un commentaire.
Utiliser le d'autres UserManager
Vous utilisez cette UserManager qui:
_userManager = new UserManager<User, long>(new UserStore<User>(_ctx));
.votre magasin d'utilisateur et de votre contexte que son paramètre de type
J'ai mis à jour ma question avec plus de détails.
OriginalL'auteur Jonesopolis
Lorsque vous étendez votre propre classe d'Utilisateur que vous avez à offrir tous des types d'Identité, qui utilise.
Voici ma classe de contexte, l'avis que j'ai utiliser la chaîne comme clé:
Bien sûr, vous devez également prendre des cours pour rôle userlogin, userclaim et userroles.
Voici la mienne:
Vous devez spécifier le type de clé sur chaque classe, dans mon cas, une chaîne de caractères, dans votre cas, une longue.
Notez également que ma demande de connexion et les classes sont vides. C'est ok, je n'ai pas pour ajouter les fonctionnalités ou des propriétés dans mon cas, mais j'ai besoin de les spécifier.
Et la GenerateUserIdentityAsync méthode dans la classe d'Utilisateur est nécessaire.
Dans le Démarrage.Auth.cs fichier, vous devez ajouter:
Vous avez également besoin d'OWIN de démarrage de la classe (qui peut être ajouté par un clic Droit - Ajouter - un Nouvel Élément) et de l'Identité.cs fichiers.
Si vous lisez l'allemand, jetez un oeil à ce blog
Il décrit ce que vous essayez de faire. (avec un db-première approche)
Aussi regarder de son vidéo (il parle bien l'anglais).
Et partie 2 de cela aussi.
J'espère que cela vous donne suffisamment d'informations pour aller de l'avant 🙂
OriginalL'auteur Lars