Hello tout le monde...
Pour un projet orienté web, on a une partie gui (en asp) qui ne doit pas être conscient du fait qu'il y a une base de donnée, une partie Business orienté objet (en c#) et une base de donnée (SQL Server).
Au début du projet (une semaine environ) j'ai pris la décision d'utiliser les table adapter et dataset typé pour gérer mes accès à la base de données.
Pas de problème jusque là et je suis même assez content de pouvoir accéder mes champs par propriété... Mais depuis hier je suis sur un problème ennuyant.
J'ai une série d'action à faire (en clair : efface toutes les subscriptions de l'account, efface l'account) et pour ca j'aurais bien aimé pouvoir faire une transaction. Comme j'ai des objets, ces appels sont sur des objets différent qui mettent à jour la base de données eux même... donc si je dois effacer deux subscription, il y aura deux SubscriptionTableAdapter.Update() avant de faire le AccountTableAdapter.Update().
Ce qui fait que j'ai plus d'une connexion à la base si je ne me trompe pas (une par update) et donc il m'est impossible de faire une transaction.
Je me suis rabattu sur le RowState en pensant pouvoir faire un accept ou reject lors du commit/rollback de mes objets. Car mes objets ne sont rien d'autre qu'une représentation des lignes de ma base. Donc chaque objet possède une variable "...Row" (SubscriptionRow, AccountRow) et peut donc savoir l'état de la ligne. Mais le problème c'est que le RowState est mis à Unmodified à chaque Update... donc aucun moyen de revenir à l'état stable précédent par un RejectChange.
Alors voilà...
Est ce qu'il existe un moyen pour éviter le AcceptChange Automatique lors du TableAdapter.Update() ?
Est ce que je dois faire une copie de l'objet "...Row" juste avant une modif pour pouvoir revenir en arrière ?
Est ce qu'il y a un moyen plus simple de faire des transactions avec des Dataset et des tableAdapter ?
Est ce que finalement je n'ai pas plutot intérêt à passer en mode connecté ?
Merci d'avance à ceux qui m'ont lu...
en espérant vous lire très vite ^^
Partager