2016-07-11 3 views
1

Ich bin mit ASP.NET Core-RC2 und ich versuche festzustellen, ob die FindByNameAsync() Methode in der UserManager Klasse einen Datenbankaufruf macht das IdentityUser Objekt oder wenn es zu bekommen bekommt das Objekt IdentityUser aus dem Speicher. Ich möchte keinen unnötigen Datenbankanruf machen, weil ich erreichen kann, was ich manuell tun möchte. Aber der Code wäre sauberer, wenn ich FindByNameAsync() verwenden könnte.ASP.NET Core-Usermanager FindByNameAsync Datenbank Rufen Sie an oder aus dem Speicher

Ich habe versucht, den Quellcode für die UserManager Klasse auf GitHub, aber ich war nicht erfolgreich. Hat jemand irgendwelche Tipps, wie Sie GitHub nach dem Quellcode einer bestimmten ASP.NET Core-Klasse durchsuchen können?

+1

Ihre Datenbank ist SQL Server? SQL Server Management Studio verfügt über einen Profiler, mit dem Sie alle Abfragen für die Datenbank anzeigen können. – mason

+1

Es gibt wahrscheinlich keine einfache Möglichkeit, einfach nach dieser Art von Dingen zu suchen. Sie wissen jedoch wahrscheinlich, dass UserManager Teil des ASP.NET Identity-Projekts ist. Microsofts Organisation in GitHub heißt 'aspnet'. Sie können [sich die Organisation ansehen] (https://github.com/aspnet). Dann finden Sie das Identitätsprojekt. Dann suche darin nach der Klasse, die du suchst. – mason

+0

@ Mason - Beide Kommentare waren sehr hilfreich. Vielen Dank! –

Antwort

3

Usermanager, code here FindByNameAsync ruft UserStore FindByNameAsync und mit der Standard EntityFramework Implementierung von Users es die Datenbank nicht abfragen

+0

Per Masons Vorschlag habe ich den SSMS Profiler verwendet und verifiziert, dass er tatsächlich einen Datenbankaufruf macht. Vielen Dank! –

+0

Denken Sie auch daran, dass die Methoden auf UserManager virtuell sind, also nichts daran hindert, sie in 'ApplicationUserManager' zu überschreiben und Caching-Unterstützung hinzuzufügen (oder tun Sie es auf dem zugrunde liegenden 'IUserStore', vielleicht sogar mit dem Decorator-Muster) – Tseng

Verwandte Themen