sql >> Base de Datos >  >> NoSQL >> MongoDB

No se pudo encontrar 'IdentityContext' (¿falta una directiva de uso o una referencia de ensamblado?)

Personalmente utilicé el mismo ejemplo para mi implementación de identidad de Asp.net sobre Mongodb y la razón por la que te estás perdiendo esa clase es porque la muestra es bastante antigua y la extensión de identidad para mongodb de la que depende es aquí y ya ha progresado a versiones actualizadas.

No puedo ir con la descripción completa aquí sobre cómo lo usé, pero seguramente puedo indicarle mi proyecto de código abierto aquí donde he aprendido del ejemplo que mencionaste. Espero que resuelva su problema al implementar Asp.net Identity con Mongodb.

Actualizar

  1. Si desea tener exactamente la misma solución que Attila Hajdrik escribió en el repositorio de git, asegúrese de tener exactamente la misma versión del paquete que AspNet.Identity.MongoDB definió aquí . Debido a que la biblioteca en sí ahora se actualizó y supongo que actualizó todos los paquetes nuget o recreó toda la solución escrita en el repositorio de github según su necesidad. En ambos casos, podría terminar con una versión de AspNet.Identity.MongoDB que no desea usar. Esta debería ser la solución más corta y fácil para su necesidad.

  2. Ahora en mi solución mencionada anteriormente de mi repositorio de github. Usé mi propio IAccountContext y usé UserManager<User> como mi AccountManager base y UserStore<User> como mi tienda subyacente para el gerente. Aquí User class es la clase de identidad que estoy usando y que se deriva de IdentityUser .

Técnicamente, puede crear su propio contexto fácilmente y realmente no tiene que confiar al máximo en el ejemplo dado.

Mi ejemplo de AccountContext sería:

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
}

Aquí, AccountManager es un UserManager<T> derivado y toma un IUserStore<User> en su constructor. Prácticamente te da más libertad sobre cómo quieres diseñar tu capa de Identidad. :)

Espero que esto ayude.