Ich habe gerade angefangen, über den Second-Level-Cache von NHibernate in einer meiner Apps nachzudenken. Ich würde wahrscheinlich die NHibernate.Caches.SysCache.SysCacheProvider
verwenden, die auf ASP.net-Cache beruht.Entfernen von Objekten aus dem NHibernate-Cache der zweiten Ebene
Aktivieren des Cache war kein Problem, aber ich frage mich, wie man den Cache e verwalten. G. programmgesteuert das Entfernen bestimmter Objekte aus dem Cache usw.
Meine Anwendung ist eine Art Bilddatenbank. Der Benutzer lädt Bilder über ein Backend hoch und kann sie im Frontend anzeigen, indem er auf /ImageDb/Show?userId=someUserId
zugreift. Die Daten ändern sich nicht sehr oft. Und wenn es sich ändert, würden die Benutzer eine Schaltfläche mit dem Namen "Cache löschen" im Back-End, die die zwischengespeicherten Objekte für diesen Benutzer aus dem Cache entfernt.
Ich habe eine Online-Lösung gefunden, die alle zwischengespeicherten Objekte aus Nhibernates Second Level Cache entfernen kann. Aber das ist ein bisschen zu brutal für mich ... Ich möchte nicht den ganzen Cache für Dutzende von Benutzern löschen, nur weil ein Benutzer versucht hat, den Cache für seine eigenen Daten zu löschen.
Also was ich eigentlich tun wollte: selektiv zwischengespeicherte DB-Objekte aus Nhibernates Second-Level-Cache in C# entfernen.
Ist das möglich? Ich denke, es hängt auch vom Cache-Provider ab. Wenn dies mit dem ASP.net-Cache-Provider nicht möglich ist, bin ich offen für andere integrierte/Open-Source-Vorschläge.
Ich weiß, dass es jetzt wahrscheinlich nicht relevant ist, aber beachten Sie, dass Ihr URI-Schema nicht korrekt ist. Es sollte Benutzer sein/[Id]/ImageDB/Show –
@the_drow - es sei denn die App heißt ImageDb :) Du hast immer noch recht, musst nur ImageDB in/Images oder etwas ändern –
@LukeSchafer: Ich habe ImageDb nur deshalb geschrieben das OP benutzt es. –