Ошибка: новая транзакция не разрешена, потому что есть ... - PullRequest
0 голосов
/ 08 января 2019

В приведенном ниже коде я пытаюсь инициировать 3 действия в моей базе данных. Сначала я сохраняю некоторые данные в первой таблице, ПК из этих данных теперь будет использоваться для сохранения других данных во второй таблице. Но чтобы убедиться, что второе действие сохранения не завершится неудачей, я удаляю все данные (хранимая процедура) с того же ПК во 2-й таблице перед сохранением второго набора данных.

Я получаю следующее сообщение об ошибке: «Новая транзакция недопустима, поскольку в сеансе запущены другие потоки»

Может кто-нибудь помочь? Вот мой код:

//**** 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);
                        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...