2010-11-25 4 views
1

Ai-je raison de supposer que si un processus différent met à jour la base de données, alors mon application alimentée par NHibernate sera désynchronisée? J'utilise presque la mise à jour non-paresseuse.Mise à jour de la base de données en dehors de l'application

Mon DB cible est mysql 5.0, si cela fait une différence.

+0

Veuillez utiliser des titres plus descriptifs que "Easy one on NHibernate"; les tags devraient montrer que c'est pour NHibernate (ce que vous avez fait) et le titre devrait faire allusion au sujet pour aider les Googlers à la recherche d'une réponse similaire et les gens ici pour repérer une question à laquelle ils pourraient répondre. – joshcomley

+0

Au moment où j'ai écrit, rien de mieux ne me venait à l'esprit. J'espère que celui-ci est plus adapté – Simone

Répondre

1

Il n'y a pas de moyen simple de répondre à cette question sans plus de contexte.

À quel type d'application pensez-vous (web, desktop, autre)?

Selon vous, qu'est-ce qui serait désynchronisé exactement? Si vous avez une application de bureau avec une fenêtre ouverte avec une session ouverte avec des données chargées et que vous changez les mêmes entités ailleurs, bien sûr, la base de données sera désynchronisée, mais vous pouvez utiliser Refresh pour mettre à jour ces entités . Si vous utilisez la mise en mémoire cache de niveau secondaire NH et que vous modifiez les entités mises en cache ailleurs, le contenu du cache sera désynchronisé, mais vous pouvez toujours utiliser les méthodes Refresh ou de contrôle de cache pour les mettre à jour directement depuis la base de données.

Dans tous les cas, NH prend en charge la concurrence optimiste en utilisant les propriétés Version; ceux-ci empêchent les modifications aux entités désynchronisées.

+0

Je développe une application qui fonctionnera 24/7. Mon PM aimerait pouvoir modifier certains paramètres de l'application sans avoir à le redémarrer, et presque tous les paramètres sont dans la base de données. Si je change la base de données en utilisant, par exemple, l'utilitaire CLI mysql, NHibernate ne pourra pas détecter la mise à jour. Je voulais juste être sûr de cela – Simone

+0

Encore une fois: quel type d'application? NH ne peut pas détecter les modifications automatiquement plus ou moins que n'importe quelle autre bibliothèque d'accès aux données. Vous pouvez interroger périodiquement la base de données si vous le souhaitez, et vous obtiendrez des données mises à jour. –

+0

désolé, ce sera une application de bureau (ou un service peut-être). – Simone

1

Oui, les objets de votre session actuelle ne seront pas synchronisés, de la même manière qu'un DataSet/DataTable serait désynchronisé si vous le récupérez et qu'un autre processus met à jour les mêmes données.

Questions connexes