在下面的代码中,我试图在数据库中启动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);
}