Je cherche à utiliser Subsonic avec une application Web ASP.net multi-locataire. Il y a plusieurs DB (un par client/instance). L'utilisateur se connecte avec un suffixe de domaine à son nom d'utilisateur (par exemple, utilisateur @ locataire1, utilisateur @ locataire2).Subsonic, SharedDbConnectionScope et ApplicationState
Le fournisseur d'appartenances personnalisées déterminera ensuite la base de données utilisée par un utilisateur et s'authentifiera auprès de celui-ci. Tous les appels initiés par l'utilisateur dans la webapp seront enveloppés dans un appel SharedDbConnectionScope, mais j'ai une question concernant la mise en cache des éléments subsoniques.
Fondamentalement chaque instance aura quelques enregistrements qui changent rarement (options de recherche/configurations). Je voudrais les lire dans l'événement Application_Start et les mettre en cache dans l'ApplicationState.
En cas Application_Start, il boucle sur chaque base de données client, utilisez un SharedDbConnectionScope pour se connecter à chaque DB, et de créer ces enregistrements mises en cache (par exemple Application (« tenant1_search_obj ») = subsonic_object
Lorsque charge un utilisateur la page de recherche, il vérifie alors dans quel domaine un utilisateur se trouve, puis récupère cette option de recherche à partir du cache
Est-ce faisable? Je suis juste concerné que si je cache un objet, quand je le récupère du cache de l'application, il ne saura pas quelle connexion son utilisation, et pourrait éventuellement tirer dans les mauvaises données
Je voudrais éviter de mettre ceci dans l'objet de session si possible.
merci pour le conseil sur le chargement paresseux/mise en cache. Cependant, lorsque je récupère les objets que j'ai mis en cache, se souviendront-ils de quelle base de données ils étaient? C'est à dire. si j'accède à des propriétés chargées paresseuses sur ces objets, vont-ils tirer de la bonne base de données? Ou est-ce que je devrais emballer n'importe quel usage d'objet dans un shareddbconnectionscope? Je ne pense pas pouvoir utiliser la méthode du fournisseur, car j'utiliserai quelques gestionnaires de données CodingHorror. – Dane
Pas les objets - vous voulez mettre en cache les * paramètres *. –