Avez-vous une idée de la raison pour laquelle cela pourrait être cassé ?
foreach (var p in pp)
{
ProjectFiles projectFile = (ProjectFiles)p;
projectFile.Status = Constants.ProjectFiles_ERROR;
projectFile.DateLastUpdated = DateTime.Now;
context.SaveChanges();
}
J'ai lu que la solution au problème est de récupérer les résultats en une seule fois avant la boucle foreach.
Mais je ne l'ai pas fait ? "pp" est la collection de résultats dans mon cas
11 votes
Est
pp
le résultat d'une requête linq ? Si c'est le cas, vous devrez peut-être faire unToList()
sur lui pour le déconnecter de la base de données avant d'exécuter votre boucle.0 votes
Oui, c'est ça. Ok, je vais essayer ça.
2 votes
appeler sauvegarder les changements en dehors de la boucle
0 votes
Juste une petite indication ici. La solution recommandée fonctionne probablement en empêchant EF de lancer constamment de nouvelles transactions à chaque sauvegarde. Cependant, elle met en évidence un problème dans EF. La logique ici n'est probablement pas la bonne. Vous devriez lancer une transaction avant de sauvegarder dans une boucle, et ensuite tout valider, ou tout annuler à la fin. À moins, bien sûr, que ce ne soit pas la logique souhaitée.