Gå til innhold

db.SubmitChanges(ConflictMode.ContinueOnConflict) feiler (nå er det mer en tre ord i emnetittelen)


Anbefalte innlegg

Skrevet

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...

Videoannonse
Annonse
Skrevet

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

Skrevet

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

Skrevet

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

Skrevet

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!

Skrevet

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...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...