错误:不允许新交易,因为有...

时间:2019-01-07 23:43:54

标签: asp.net-mvc entity-framework

在下面的代码中,我试图在数据库中启动3个操作。 如果先将一些数据保存在第一个表中,则来自该数据的PK现在将用于将另一个数据保存在第二个表中。但是为了确保第二次保存操作不会失败,在保存第二组数据之前,我从第二张表中具有相同PK的所有数据(存储过程)中删除了。

我收到以下错误消息: “不允许新事务,因为会话中正在运行其他线程”

有人可以帮忙吗? 这是我的代码:

//**** On encapsule le demandeur saisi ****
                        Demandeurs Ddeur = new Demandeurs
                        {
                            Code_Demandeur = vCode_Demandeur,
                            Nom_Demandeur = nomSaisi,
                            Prenoms_Demandeur = firstNameSaisi,
                            Adresse_Demandeur = addSaisi,
                            ID_Ville = idVilSaisi,
                            ID_Province = idProvSaisi,
                            CodePostal_Demandeur = zipSaisi,
                            Tel1_Demandeur = phone1Saisi,
                            Tel2_Demandeur = phone2Saisi,
                            Tel3_Demandeur = phone3Saisi,
                            Courriel1_Demandeur = email1Saisi,
                            Courriel2_Demandeur = email2Saisi,
                            Courriel3_Demandeur = email3Saisi,
                            Code_Conseiller = idConsSaisi,
                            ID_SituationMatrimoniale = idMatSaisi,
                            ID_Sexe = idSexSaisi,
                            ID_TranchesRevenu = idTrRevSaisi,
                            ID_Occupation = idOccSaisi,
                            ID_Scolarite = idScoSaisi,
                            ID_StatutLegal = idLegSaisi,
                            ID_Communaute = idCommSaisi,
                            ID_SourceInformation = idInfoSaisi,
                            Handicape = chkHandiSaisi,
                            Remarques_Demandeur = remSaisi,
                            Date_Naissance_Demandeur = birthdateSaisi,
                            Date_Ouverture_Dossier = startDateSaisi,
                            Date_Cloture_Dossier = endDateSaisi,
                            Test = true,
                            Actif_Inactif = inActif,
                            Dte_Saisie = dte,
                            UserId = usr,
                        };

                        try
                        {
                            //**** Sauvegarde le demandeur ****
                            db.Demandeurs.Add(Ddeur);
                            db.SaveChanges();
                        }
                        catch (Exception ex)
                        {
                            msg = "Une erreur SQL s'est produite! L'ajout dans la table 'Demandeurs' a échoué. Raison: " + ex.GetType().FullName;
                            return Json(msg, JsonRequestBehavior.AllowGet);
                        }

                        //================ SECTION AJOUT LANGUES ET SOURCE DE REVENU si le demandeur a été ajouté avec succès =============
                        //**** Ajout des langues ...
                        var languesList = new List<Langue_Demandeur_Conseiller>();

                        //**** Langues Maternelle ****
                        languesList.Add(new Langue_Demandeur_Conseiller
                        {
                            ID_Langue = idLgMatSaisi,
                            Code_Demandeur_Conseiller = vCode_Demandeur,
                            LangueMaternelle = true,
                            Remarque_Langue_DdeurCons = null,
                            Actif_Inactif = inActif,
                            Dte_Saisie = dte,
                            UserId = usr
                        });

                        if (numberList.Any())   //**** Langues Autres ****
                        {
                            foreach (int n in numberList)
                            {
                                //*** Ajout au cas où ce n'est pas le même chose que la langue maternelle ****
                                if (n != idLgMatSaisi)
                                {
                                    languesList.Add(new Langue_Demandeur_Conseiller
                                    {
                                        ID_Langue = n,
                                        Code_Demandeur_Conseiller = vCode_Demandeur,
                                        LangueMaternelle = false,
                                        Remarque_Langue_DdeurCons = null,
                                        Actif_Inactif = inActif,
                                        Dte_Saisie = dte,
                                        UserId = usr
                                    });
                                };
                            };
                        };

                        try
                        {
                            //**** Supprimer d'abord langues selon le demandeur ****
                            var langSupp = db.spGetLanguesParCodeDdeurCons(vCode_Demandeur);

                            try
                            {
                                //**** Puis sauvegarde les langues saisies ****
                                db.Langue_Demandeur_Conseiller.AddRange(languesList);
                                db.SaveChanges();
                            }
                            catch (Exception ex)
                            {
                                msg = "Une erreur SQL s'est produite! L'ajout dans la table 'Langue_Demandeur_Conseiller' a échoué. Raison: " + ex.GetType().FullName;
                                return Json(msg, JsonRequestBehavior.AllowGet);
                            };
                        }
                        catch (Exception ex)
                        {
                            msg = "Une erreur SQL s'est produite! La suppression dans la table 'Langue_Demandeur_Conseiller' a échoué. Raison: " + ex.GetType().FullName;
                            return Json(msg, JsonRequestBehavior.AllowGet);
                        }

                        //**** Ajout des sources de revenu ...
                        var srceRevList = new List<Demandeur_SourceRevenu>();

                        //**** Encapsuler la source de revenu ****
                        srceRevList.Add(new Demandeur_SourceRevenu
                        {
                            ID_SourceRevenu = idRevSaisi,
                            Code_Demandeur = vCode_Demandeur,
                            Remarques_RevenuDemandeur = null,
                            Actif_Inactif = inActif,
                            Dte_Saisie = dte,
                            UserId = usr
                        });
                        try
                        {
                            //**** Supprimer d'abord langues selon le demandeur ****
                            var srceRevSupp = db.spDelSrce_RevenuParCodeDdeur(vCode_Demandeur);

                            try
                            {
                                //**** Puis sauvegarde les sources de revenu ****
                                db.Demandeur_SourceRevenu.AddRange(srceRevList);
                                db.SaveChanges();
                            }
                            catch (Exception ex)
                            {
                                msg = "Une erreur SQL s'est produite! L'ajout dans la table 'Demandeur_SourceRevenu' a échoué. Raison: " + ex.GetType().FullName;
                                return Json(msg, JsonRequestBehavior.AllowGet);
                            };
                        }
                        catch (Exception ex)
                        {
                            msg = "Une erreur SQL s'est produite! La suppression dans la table 'Demandeur_SourceRevenu' a échoué. Raison: " + ex.GetType().FullName;
                            return Json(msg, JsonRequestBehavior.AllowGet);
                        }

0 个答案:

没有答案