Bonjour,
Je suis confronté à un problème de doublons lors d'une action de Create. Mon formulaire est transmis en ajax à mon contrôleur, qui enregistre ensuite les différentes valeurs dans les bonnes tables. La transmission fonctionne, de même que l'enregistrement...
Script sur la vue
Le contrôlleur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $.ajax({ url:'/Panels/CreateNewAlert', dataType:'json'; type:'post', contentType:'application/json;charset=utf-8' data:JSON.stringify({ alertMap:{AlertModeID:$('#AlertModeID').val(),AlertPriorityID:$('#AlertPriorityID').val()}, alertLog:{AlertTitle:$('#AlertLog_AlertTitle').val(),AlertText:$('#AlertLog_AlertText').val(),AlertStartDate:$('#AlertLog_AlertStartDate').val(),AlertActive:'true'}, recipientlistip:brutelistip, recipientlistpc:brutelistpc }), async:true, processData:false, cache:false, succes:function(data){ alert(data); }, error:function(xhr){ alert('error'); } })
Sauf que, mon enregistrement "alertLog" est systématiquement enregistré en double, avec des Ids différents. Je ne comprends pas pourquoi... la console de debug ne me donne pas trop d'indication, surtout je ne vois pas l'instruction db.SaveChanges se répéter, elle ne s’exécute qu'une fois, mais j'ai ce doublon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 [HttpPost] public JsonResult CreateNewAlert(AlertMap alertMap, AlertLog alertLog, RecipientMap recipientMap, int[] recipientlistip, int[] recipientlistpc) { if(ModelState.IsValid) { db.AlertLog.Add(alertLog); db.SaveChanges(); int alertid = alertLog.AlertID; recipientMap.IPgroupID = 3; recipientMap.AlertID = alertid; db.RecipientMap.Add(recipientMap); db.SaveChanges(); alertMap.AlertID=alertid; alertMap.UsersID= User.Identity.GetUserId(); db.AlertMap.Add(alertMap); db.SaveChanges(); } return Json("Succes!"); }
Après j'ai fais ce test :
C'est à dire en mettant des données manuellement dans le contrôleur. Et là, le doublon disparait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 alertLog.AlertActive = true; alertLog.AlertTitle = "pif"; alertLog.AlertText = "pof"; alertLog.AlertStartDate = DateTime.Now; alertLog.AlertEndDate = DateTime.Now; db.AlertLog.Add(alertLog); db.SaveChanges();
Bref, j'ai besoin de vos lumières !
En vous remerciant
Les autres tables sont enregistrées correctement, sans doublons.
Partager