|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : août 2004 Messages : 216 ![]() |
Bonjour,
je débute avec Linq to SQL, et j'ai une question au sujet du Rollback. J'insère des données en base que j'ai besoin d'utiliser immédiatement. Donc pour ça je fais : Code :
Sinon, existe-t-il une autre solution pour insérer des données en bases, les utiliser et annuler les changements ? |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() |
Si tu veux faire un rollback, tu dois utiliser les transactions. Exemple :
Code c# : Code :
__________________
Microsoft MVP : Visual C# MCPD - Windows Developer 4 MCPD - Web Developer 4 MCTS - Silverlight 4, Development “If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra) |
||
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : août 2004 Messages : 216 ![]() |
Merci pour la réponse,
je vais regarder du côté de TransactionScope alors. |
|
|
00
|
|
|
#4 | ||||
|
Membre du Club
![]() Inscription : août 2004 Messages : 216 ![]() |
J'essaye d'utiliser le transactionScope mais j'ai un problème.
Je vois partout qu'il s'utilise de cette manière : Code :
Seulement mon bloc TransactionScope n'est pas local mais global à l'application. Le commit se fait lorsque l'utilisateur clique sur "enregistrer" et il y a rollback s'il fait "annuler les modifications". Donc j'ai plutôt fait ça : Code :
|
||||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : août 2004 Messages : 216 ![]() |
Personne n'a déjà été confronté a cette problématique ?
Je me demande si le transactionScope est le bon objet à utiliser ... |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 5 352 ![]() |
A vrai dire, presque personnes n'utilise Link2Sql, ses inconvénients dépassant largement ses bénéfices.
Citation:
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
|
01
|
|
|
#7 |
|
Membre du Club
![]() Inscription : août 2004 Messages : 216 ![]() |
Que faut-il que j'utilise alors ?
Mon besoin est très simple, je développe une application de gestion de budget, et j'ai donc besoin, entre autre, de stocker les opérations, de faire des requêtes, de tout annuler à n'importe quel moment, etc, bref les manipulations classiques de ce genre d'application. Avec LinqToSql j'arrive à faire tout ça, sauf le rollback "global" dont je parle dans ce sujet. J'ai regardé Linq To Entities, mais ça m'a eu l'air compliqué à mettre en place pour mon besoin et surtout, si c'est l'objet TransactionScope qui utilisé le problème reste le même. Edit : La solution serait peut-être de ne pas faire de submitChanges tant que l'utilisateur n'a pas cliqué sur "sauvegarder", et pour les requêtes, d'utiliser les opération sauvegardée en base + celles contenues dans DataContext.GetChangeSet(); Ou alors travailler sur une copie de la BDD tout simplement. Qu'en penez vous ? J'ai l'impression de faire du bricolage et qu'une solution plus "élégante" existe. |
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
|
|
|
00
|
|
|
#9 | |
|
Membre du Club
![]() Inscription : août 2004 Messages : 216 ![]() |
Citation:
Edit : J'arrive à annuler des modif avec un objet DbTransaction global, mais après un Transaction.Rollback(); les clés primaires des objet "rollbackés" sont a priori gardé en mémoire car il m'est impossible de les insérer de nouveau, j'obtiens une exception lors du submitChanges() : Impossible d'ajouter une entité avec une clé déjà en cours d'utilisation. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com