Concurrency, referential integrity violations - how to handle?
Jeg har 3 tabeller med relationer og update/cascade delete oprettet både i dataset og DB. En ASPX side læser tabellerne ind i et dataset vha TableAdapters, brugeren laver ændringer indtil tilfreds og derpå gemmer data.I et multiuser miljø, kan nogle brugere delete noget i en tabel, mens andre retter noget i en anden tabel. Dette vil ved gemning af data afstedkomme forskellige violations.
Jeg kan fint fange dem i TabelAdapterens RowUpdated event handler.
De eksempler jeg har set, kører adapaterens .Update metode i en try/catch blok, og håndterer således EEN exception ad gangen dér.
Jeg savner et eksempel på taktik til at håndtere en situation, hvor der kan forekomme mange fejl.
Jeg ønsker at min process ikke stopper, men at den fortsætter Db-opdateringen indtil alle ændrede rækker har været igennem processen. Derpå skal der for brugeren præsenteres en liste over de fejl der har været. Dette fordi brugeren rent umiddelbart intet kan stille op, men skal dog gøres opmærksom på, at nogle ting ikke gik som han forventede.
Mit største problem vedrører udførelse af punkt 3 i følgende liste:
1. En tabel har ændringer i nogle rækker og DB'en skal opdateres passende.
2. Concurrency/integrity violations fanges i TableAdapterens RowUpdated event - det har jeg igen problemer med.
3. En violation skal ikke føre til at opdateringen stopper, men info om den specifikke række og typen af violation skal gemmes på en eller anden måde.
4. En liste af fejl skal vises efter processen er løbet igennem alle ændrede rækker.
Jeg har mange ideer til hvordan man kunne gøre det, men det kunne være nogen havde kendskab til et passende eksempel.