Bonjour tout le monde,
Ainsi qu'il en a été question dans d'autres fils, j'avais des problèmes, avec le contrôle de saisie de jQuery, pour saisir des nombres avec décimales.
ça a été solutionné tel que mentionné là :
http://blog.pagesd.info/2011/04/08/g...a-annotations/
Depuis, si à la création d'enregistrement il n'y a aucun souci, à l'édition, sur le SaveChanges j'ai (enfin j'avais à l'instant) un problème d'accès concurrentiel, et ça se poursuit, enfin ça se poursuivait, jusqu'à ce que je remette l'ancien prix. Pas terrible.
Finalement, je m'en suis sorti comme ça, dans le (post) ActionResult Edit :
Donc, après avoir initialisé la catégorie dont j'ai besoin ensuite, j'ai initialisé un nouvel objet plat en cherchant dans la table d'après l'identifiant de celui qui a été édité dans la page, puis j'ai renseigné toutes ses propriétés d'après celles récupérées de la page, et pour finir je sauvegarde ça dans la base. Et ça marche, alors qu'avec le "db.Entry(plat).State = EntityState.Modified" qu'on utilise d'habitude, rien à faire c'est verrouillé. Et ça, seulement si l'utilisateur a changé le prix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int catId = plat.CategorieId; Categorie c0 = (from c in db.Categories select c) .Where(c => c.IdCategorie == catId).FirstOrDefault(); Plat p0 = db.Plats.Find(plat.IdPlat); p0.prix = plat.prix; p0.CategorieId = plat.CategorieId; p0.IntitulePlat = plat.IntitulePlat; p0.categorie = c0; db.SaveChanges();
Alors d'une part c'est bon à savoir car il se pourrait bien que je ne sois pas le seul à rencontrer ce problème, d'autre part si quelqu'un comprend ce qui se passe, ça peut aussi avoir son intérêt d'expliquer ...
Partager