MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

'IdentityContext' konnte nicht gefunden werden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz)

Ich persönlich habe dasselbe Beispiel für meine Asp.net Identity-Implementierung über Mongodb verwendet, und der Grund, warum Sie diese Klasse vermissen, liegt darin, dass das Beispiel ziemlich alt ist und die Identity-Erweiterung für Mongodb, von der es abhängt, hier und es hat sich bereits zu aktualisierten Versionen entwickelt.

Ich kann hier nicht vollständig beschreiben, wie ich es verwendet habe, aber ich kann Sie sicherlich auf mein Open-Source-Projekt verweisen hier wo ich aus dem Beispiel gelernt habe, das Sie erwähnt haben. Ich hoffe, es würde Ihr Problem bei der Implementierung von Asp.net Identity mit Mongodb lösen.

Aktualisieren

  1. Wenn Sie genau dieselbe Lösung haben möchten, die Attila Hajdrik im Git-Repo geschrieben hat, stellen Sie bitte sicher, dass Sie genau dieselbe Paketversion haben, die AspNet.Identity.MongoDB definiert hier . Weil die Bibliothek selbst jetzt selbst aktualisiert wird und ich annehme, dass Sie entweder alle Nuget-Pakete aktualisiert oder die gesamte im Github-Repo geschriebene Lösung nach Ihren Bedürfnissen neu erstellt haben. In beiden Fällen erhalten Sie möglicherweise eine Version von AspNet.Identity.MongoDB, die Sie nicht verwenden möchten. Dies sollte die kürzeste und einfachste Lösung für Ihren Bedarf sein.

  2. Nun zu meiner oben erwähnten Lösung aus meinem Github-Repo. Ich habe meinen eigenen IAccountContext verwendet und ich habe UserManager<User> verwendet als mein Basis-AccountManager und UserStore<User> als mein zugrunde liegendes Geschäft für den Manager. Hier User class ist die Identitätsklasse, die ich verwende und die von IdentityUser abgeleitet ist .

Technisch gesehen können Sie Ihren eigenen Kontext einfach aufbauen und müssen sich nicht voll und ganz auf das gegebene Beispiel verlassen.

Mein Beispiel-AccountContext wäre :

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
}

Hier, AccountManager ist ein UserManager<T> abgeleitet und benötigt einen IUserStore<User> in seinem Konstruktor. Es gibt Ihnen praktisch mehr Freiheit, wie Sie Ihre Identitätsebene gestalten möchten. :)

Hoffe das hilft.