bonjour j'ai un peit souci avec ASP.NET et Entity Framework...
sous une page asp.net j'ai un multiview et deux vue à l'intérieur.
1. la première sert à la consultation
elle me permet de faire une DropDown sur un jeu de données, qui va filtrer une GridView qui lui consulte un autre jeu de données.
Ces jeux de données proviennent d'un objet de contexte EF fortement typé pour l'occasion (fichiers EDMX et tout ce qui va avec)
dans la gridview il est possible de sélectionner un élément
quand je sélectionne un évenement j'extrait sa clé et je lance alors une validation de la page/rechargement pour cette fois entrer en mode "édition" donc la vue 2, sachant que tous les controles de la vue 1 préserves tous leur états visuel, de façon à pouvoir revenir en arrière, en revenant simplement sur la vue 1
2. la seconde vue permet l'édition
au premier affichage de cette vue, pas de problème, tout se passe bien, les différents composants sont bien bindés à l'objet en cours d'édition.
Là où plus rien ne va si je puis dire c'est quand je veux "persister" les changements, pour cela je fourni un bouton avec un évenement OnClick et dans ce gestionnaire je fait les transformations nécessaires, la construction des liens de dépendances, tout ce qui va bien, et je demande à l'objet de contexte de faire un SaveChanges()
et là CRASH !
il me sort une excuse comme quoi les transactions ne peuvent se dérouler tant que plusieurs threads sont en cours d'exécution...
problème, c'est le même thread qui passe par les différents évenements de la page, et les traitements potentiellement asynchrones de databinding devraient donc être tous achevés...
je sais pas trop si j'ai été suffisamment claire, mais ce problème est particulièrement pénible, aussi j'aimerais savoir s'il y a moyen de "contourner" ce problème... et à la limite d'attendre que toutes les tâches asynchrones s'achèves avant de continuer, ou s'il y a un moyen de demander à ce que tous les processus de databinding des différents composants de la pages ne soient plus asynchrone mais synchrones...
pourtant j'ai bien pris soin de fournir des ObjectResult ou des Enumerations (déjà évaluées) en guise de sources de données, donc à priori les requêtes sur le contexte devraient être achevées... je ne devrais donc pas avoir cette erreur.
Là j'avoue être complètement perdu...
Merci de votre aide.
Partager