HDSoftware Skrevet 19. august 2009 Del Skrevet 19. august 2009 Heisan folkens Jeg lager en planlegger der brukeren kan flytte elementer ved å endre på tidspunkter. For å unngå at to elementer kan være på samme sted og tid så har jeg i databasen satt en unik nøkkel på sted og tid. I koden gjør jeg slik: try { DataHandling.db.SubmitChanges(ConflictMode.ContinueOnConflict) } catch (ChangeConflictException ce) { foreach (ObjectChangeConflict occ in dataHandling.db.ChangeConflicts) { Fellestrening feil = (Fellestrening)occ.Objext; Message......... en melding til bruker occ.Resolve(RefreshMode.KeepCurrentValues); } DataHandling.db.SubmitChanges(); } Alikevel så får jeg en exception inne i TRY området som sier: SqlException Was Unhandled Cannot Insert duplicate key row in object 'dbo.Fellestrening' with unique index 'DuplicateCheck'. The statement has terminated." Noen ide om hvorfor denne kommer frem i det hele tatt? trodde en TRY/CATCH skulle for det første, forhidre at meldingen vises til bruker og for det andre, la meg ordne opp i feilen "by code" Takker for alle tips... Lenke til kommentar
GeirGrusom Skrevet 19. august 2009 Del Skrevet 19. august 2009 Fordi det er en SqlException, og ikke en ChangeConflictException som dukker opp. Lenke til kommentar
HDSoftware Skrevet 20. august 2009 Forfatter Del Skrevet 20. august 2009 Vil ikke absolutt alle exceptions som kommer fra SubmitChanges være SQL exceptions? Og uansett, hvorfor skal en SQL Exception slippe gjennom en Try/Catch i det hele tatt? Er jo derfor man gjør Try/Catch for nettop slike situasjoner Lenke til kommentar
MrEspen Skrevet 20. august 2009 Del Skrevet 20. august 2009 Fordi du kun catcher en spesifikk exception, og med mindre metoden kaster en exception som arver av denne så vil den ikke bli catchet. Derfor skal man helst lage en catch per exception en metode kan tenke seg å kaste... /Espen Lenke til kommentar
HDSoftware Skrevet 20. august 2009 Forfatter Del Skrevet 20. august 2009 Ahhh, for påkker! Du har rett. Så hvis je catcher "alle" exceptioner så går den gjennom Try/Fetch på rett måte. Takker for den. Ser jo at det var nettop dette GG svarte og, men "catchet" ikke retningen i svaret hans :-D Lenke til kommentar
MrEspen Skrevet 20. august 2009 Del Skrevet 20. august 2009 Hvis du catcher Exception som alle andre Exceptions kaster så vil du havne i catchen ja, men da blir det vanskeligere å handle på bakgrunn av hva slags exception du har fått... Så hvis du ønsker en god flyt i programmet ditt så lønner det seg å catche spesifikke exceptions. Med det sagt så pleier jeg aldri gjøre det selv, og best practice er jo uansett å jobbe preventivt mot at exceptions oppstår, men så er jeg lat da =) Lykke til! Lenke til kommentar
HDSoftware Skrevet 21. august 2009 Forfatter Del Skrevet 21. august 2009 ja, men i dette tilfellet er jeg antagligvis avhengig av å bruke exceptions. Det er vel ingen andre måter å catche duplikater på tror jeg. Det som forundrer meg litt er jo at den exception jeg sjekker på er jo nettop den exception som er dokumentert å bruke. Pussig. Får forske litt på det... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå