Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
1846 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ASP.NET] nHibernate, gestion de la session en cache ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASP.NET] nHibernate, gestion de la session en cache ?

n°2121849
DiB91
Bwaaaaaaah
Posté le 17-01-2012 à 15:19:17  profilanswer
 

Bonjour à tous.

 

En plein dans le design d'une application web ASP .NET MVC3 pour le boulot, je rencontre un problème avec l'accès aux données.

 

Le contexte :
L'application web principale est écrite en ASP .NET MVC3, le code saisi en C# et les vues, en HTML (moteur Razor).
Les données sont stockées sur un serveur web (Windows 2008 R2), dans une base MSSQL 2008.
L'accès aux données se fait par l'intermédiaire de nHibernate qui est correctement implémenté et configuré.

 

Le tout est fonctionnel, mais un bug apparemment inhérent à nHibernate me pose problème :
Si les données sont modifiées via l'application, le fonctionnement est correct, les données modifiées sont bien prises en compte.
Par contre, si les données sont modifiées en dehors de l'application (ex : sous SQL Server Management Studio) pendant que l'application tourne, les modifications ne sont pas répercutées dans l'application !
C'est comme si une mise en cache se faisait au lancement de l'application et ne se mettait à jour que lors d'une modification des données par l'application.

 

Dans mon contexte, c'est assez facheux, car l'application est destinée à tourner en environnement réseau, et les données d'être exploitées par plusieurs machines. Il peut donc y avoir modification des données en dehors de l'application sur une machine donnée.

 

Avez-vous déjà remarqué ce fonctionnement ?
Est-ce lié à ma configuration de nHibernate ?

 

Merci d'avance :)

 

Damien

 

EDIT : Correction pétage de plombs de mes scripts GreaseMonkey :D


Message édité par DiB91 le 17-01-2012 à 16:26:02
mood
Publicité
Posté le 17-01-2012 à 15:19:17  profilanswer
 

n°2121867
DiB91
Bwaaaaaaah
Posté le 17-01-2012 à 16:27:03  profilanswer
 

J'ai trouvé un moyen de contourner le soucis en demandant un refresh de l'objet que je veux lire (session.refresh(objet))... C'est pas très user friendly, mais ça semble faire l'affaire...

n°2121997
Fred82
Posté le 18-01-2012 à 10:25:21  profilanswer
 

T'as Flush() aussi, qui est peut-être plus simple à utiliser :
http://rajputyh.blogspot.com/2008/ [...] flush.html
 
Il y a peut-être moyen de désactiver le cache de NHibernate, mais ce serait dommage car c'est un atout de ce framework.


---------------
Vos smileys favoris sur HFR : Script Greasemonkey / Topic HFR officiel
n°2121999
DiB91
Bwaaaaaaah
Posté le 18-01-2012 à 10:36:23  profilanswer
 

Effectivement, la mise en cache est quand même bien pratique, surtout dans un contexte web où la base de données est sur un serveur distinct.
 
Je vais me renseigner pour le Flush().
 
Une autre piste : il semble que la manière dont sont écrits mes Repository ait un impact sur le comportement du cache.
J'ai l'impression que la gestion du cache fonctionne mieux lorsque j'écris mes requêtes en "plain SQL" plutôt qu'en utilisant du Linq...

n°2122934
jogrey
Posté le 23-01-2012 à 16:25:11  profilanswer
 

La cache sert à stocker des valeurs pour ses "clients" sans faire des aller-retours sur la db.  
 
Si une appli tierce viens modifier tes données, il faudra rafraîchir, pour t'aider un champ timestamp, mis à jour automatiquement avec un trigger pourrait faire l'affaire.
 
Niveau gestion de cache SysCache2 normalement utilise SqlCacheDependencies pour invalider les POCOs qui auraient été modifiés par une appli tierce.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ASP.NET] nHibernate, gestion de la session en cache ?

 

Sujets relatifs
Utiliser Google agenda pour une appli de gestion de reservation[VB.NET] Préparer une impression
[VB.Net]Drag and drop[VB.NET] Utilisation des collections [Résolu]
Gestion des sous-domaines par htaccess (classic :/)[VB.NET] Lecture et écriture
Session et expiration automatique[RESOLU] Recuperer tableau associatif de ma session
Où trouver les spécifications des navigateurs sur la gestion des imageASP.Net : afficher un message javascript sur le OnError
Plus de sujets relatifs à : [ASP.NET] nHibernate, gestion de la session en cache ?


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware