MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

'IdentityContext' est introuvable (vous manque-t-il une directive using ou une référence d'assembly)

J'ai personnellement utilisé le même exemple pour mon implémentation Asp.net Identity sur Mongodb et la raison pour laquelle vous manquez cette classe est due au fait que l'échantillon est assez ancien et que l'extension Identity pour mongodb dont il dépend est ici et il a déjà progressé vers des versions mises à jour.

Je ne peux pas donner ici la description complète de la façon dont je l'ai utilisé, mais je peux sûrement vous indiquer mon projet open source ici où j'ai appris de l'exemple que vous avez mentionné. J'espère que cela résoudra votre problème lors de la mise en œuvre de l'identité Asp.net avec Mongodb.

Mettre à jour

  1. Si vous souhaitez avoir exactement la même solution qu'Attila Hajdrik a écrite dans le référentiel git, assurez-vous d'avoir exactement la même version de package définie par AspNet.Identity.MongoDB ici . Parce que la bibliothèque elle-même est maintenant mise à jour elle-même et je suppose que vous avez soit mis à jour tous les packages de nuget, soit recréé toute la solution écrite dans le référentiel github en fonction de vos besoins. Dans les deux cas, vous pourriez vous retrouver avec une version d'AspNet.Identity.MongoDB que vous ne souhaitez pas utiliser. Celui-ci devrait être la solution la plus courte et la plus simple pour votre besoin.

  2. Maintenant sur ma solution mentionnée ci-dessus à partir de mon référentiel github. J'ai utilisé mon propre IAccountContext et j'ai utilisé UserManager<User> comme mon AccountManager de base et UserStore<User> comme magasin sous-jacent pour le gestionnaire. Ici User class est la classe Identity que j'utilise et qui est dérivée de IdentityUser .

Techniquement, vous pouvez facilement créer votre propre contexte et vous n'avez pas vraiment à vous fier entièrement à l'exemple donné.

Mon exemple de AccountContext serait :

public class AccountContext : IAccountContext
{        
    private readonly IDbContext dbContext;
    private readonly AccountManager accountManager;

    public AccountContext(
        IDbContext dbContext,         
        AccountManager accoutnManager)
    {
        this.dbContext = dbContext;
        this.accountManager = accoutnManager;        
    }
// Your own stuff here
}

Ici, AccountManager est un UserManager<T> dérivé et il faut un IUserStore<User> dans son constructeur. Cela vous donne pratiquement plus de liberté sur la façon dont vous souhaitez concevoir votre couche d'identité. :)

J'espère que cela t'aides.