Disons que j'ai un client qui remplit une donnée d'un site Web. la persistance sous-jacente utilisée est Nhibernate.Session stateful avec nhibernate et asp.net
Maintenant, la série d'événements comme celui-ci va
- utilisateur remplit le formulaire.
- il soumet le formulaire.
- La session nhibernate sessionfactory est créée et via l'objet client elle est enregistrée dans la base de données.
- La base de données valide l'objet session à l'aide d'un générateur natif pour nhibernate
- mais un incident survient avant que la réponse du serveur n'atteigne le client. la connexion au client se déclenche.
- le client peut voir une erreur de page introuvable ou demande une erreur de délai d'attente. et a un dilemme qu'il n'est pas encore enregistré. Il appuie de nouveau sur le bouton d'actualisation. et le même ensemble de données (bien que cela soit validé pour la base de données) a été envoyé au serveur pour la validation de la base de données.
- le serveur voit les données et enregistre à nouveau le même client avec un ID différent.
- donc le problème va comme. maintenant la même entrée de client a été dupliquée deux fois parce que la connexion a été coupée.
Maintenant quelqu'un peut-il me dire comment procéder dans ce scénario. Donc, même si le client soumet qu'il reconnaît juste une seule entrée et la soumet, même si la réponse a été coupée et il appuie sur le bouton d'actualisation?
le 4ème point pouvez-vous s'il vous plaît donner un exemple de code factice? Je comprends vraiment le concept, mais encore à mettre en œuvre et je n'utilise pas MVC, mais asp.net 3.5 simple, donc comment utiliser une méthode de contrôleur si vous pouvez fournir s'il vous plaît avec un code factice. il serait très utile :(désolé de demander la faveur, mais je n'arrive pas vraiment à comprendre comment implémenter – Joy
Ne doit pas être contrôleur - édité pour dire la méthode de haut niveau - par exemple dans Page_Load. Donc Page_Load devrait ouvrir la transaction, vérifier la base de données pour voir si l'utilisateur est déjà enregistré, sinon, enregistrer les nouveaux détails de l'utilisateur, puis valider la transaction et Response.Redirect à la page indiquant l'inscription réussie. – BonyT
vous voulez dire que je devrais implémenter ihttpModule et ensuite utiliser un peu context.beginrequest event à l'intérieur faire le travail .. et ensuite vérifier si la session existe déjà .. elle se mettrait à jour avec cette session seulement sinon elle dirait que l'utilisateur existe déjà. .. après que lors de son événement context.endrequest il serait simplement effacer de la session locale. c'est comme ça que tu voulais dire? J'ai cherché et trouvé ce lien à un peu b situation pour laquelle. http://adammatusiak.blogspot.com/2010/03/binding-fluent-nhibernate-session-to.html – Joy