J'étudie la concurrence optimiste dans NHibernate. J'ai un scénario très similaire à celui qui est décrit ici :
Recommanderiez-vous de suivre la solution proposée dans cet article de blog ?
Gracias
J'étudie la concurrence optimiste dans NHibernate. J'ai un scénario très similaire à celui qui est décrit ici :
Recommanderiez-vous de suivre la solution proposée dans cet article de blog ?
Gracias
Le blog suggère d'utiliser un intercepteur pour recharger le numéro de version actuel à partir de la base de données afin d'effectuer un contrôle manuel de la version avec la version transmise par l'entité à partir d'un objet DTO. Cela pourrait certainement fonctionner, mais comme décrit dans l'article, cela ajoute un accès supplémentaire à la base de données pour charger le numéro de version actuel.
La meilleure solution, qui semble assez évidente puisqu'il s'agit en fait de ce qui est décrit dans la documentation pour "Application version checking" comme décrit et cité dans cet article de blog. Il s'agit d'effectuer le contrôle de version sur le fichier initialement entité chargée en utilisant la version de la DTO. Plus précisément, en utilisant le code de l'article (les modifications apportées au code de l'article sont les suivantes en gras ) :
public void Update(MyDTO dto) {
// Select the item.
var item = this.repository.SelectById(dto.Id);
**// Verify there hasn't been a concurrent change
if(item.Version != dto.Version)
{
throw new StaleObjectStateException();
}**
// Map values from DTO to model.
item.Name = dto.Name;
**~~item.Version = dto.Version;~~**
// Call update
this.repository.Update(item);
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.