MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Impossibile trovare 'IdentityContext' (ti manca una direttiva using o un riferimento all'assembly)

Personalmente ho usato lo stesso esempio per la mia implementazione di Asp.net Identity su Mongodb e il motivo per cui ti manca quella classe è perché l'esempio è piuttosto vecchio e l'estensione Identity per mongodb da cui dipende è qui ed è già passato alle versioni aggiornate.

Non posso andare con la descrizione completa qui su come l'ho usato, ma sicuramente posso indirizzarti al mio progetto open source qui dove ho imparato dall'esempio che hai citato. Spero che risolva il tuo problema sull'implementazione di Asp.net Identity con Mongodb.

Aggiorna

  1. Se vuoi avere esattamente la stessa soluzione che Attila Hajdrik ha scritto nel repository git, assicurati di avere esattamente la stessa versione del pacchetto definita da AspNet.Identity.MongoDB qui . Perché la libreria stessa è ora aggiornata da sola e presumo che tu abbia aggiornato tutti i pacchetti nuget o ricreato l'intera soluzione scritta nel repository github in base alle tue esigenze. In entrambi i casi, potresti ritrovarti con una versione di AspNet.Identity.MongoDB che non desideri utilizzare. Questa dovrebbe essere la soluzione più breve e semplice per le tue esigenze.

  2. Ora sulla mia soluzione menzionata sopra dal mio repository github. Ho usato il mio IAccountContext e ho usato UserManager<User> come AccountManager di base e UserStore<User> come il mio negozio sottostante per il manager. Qui User class è la classe Identity che sto usando e che è derivata da IdentityUser .

Tecnicamente puoi creare facilmente il tuo contesto e non devi assolutamente fare affidamento sull'esempio fornito al massimo.

Il mio esempio AccountContext sarebbe:

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
}

Qui, AccountManager è un UserManager<T> derivata e richiede un IUserStore<User> nel suo costruttore. Praticamente ti dà più libertà su come vuoi progettare il tuo livello di identità. :)

Spero che sia di aiuto.