The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

Valnuke (9) [Avatar] Offline
#1
Hi, I have a problem and I can't seem to solve it

Using scope As New Transactions.TransactionScope
Try
db.Jobs.DeleteOnSubmit(jobToDelete)
db.Shipments.DeleteOnSubmit(shipmentToDelete)
db.SubmitChanges
scope.complete
Catch ex As Exception
Msgbox(ex.tostring)
End Try
End Using

Let's say that I receive an error and I can't delete the shipmentToDelete from database. (maybe because its ID is used as FK in another table)

Even if I solve the problem, my datacontext still has these 2 object in the GetChangeSet.Deletes cache!!
so every time i try to do db.submit, for whatsoever reason, I get the same error

how to avoid it?

I would like to be able to clear somehow the db pending object cache in case of errors, otherwise I would have to create a new datacontext object, but I'm worried this could give problems the rest of my Windows Form...

thanks
fabrice.marguerie (224) [Avatar] Offline
#2
Re: Big problem with db.deleteonsubmit
I believe that this follows that Unit of Work pattern that Microsoft used when designing LINQ to SQL's DataContext class.
This means that if you want to go on with the processing that failed, you can retry with the same DataContext, but if you want to submit something different, then this is considered a new Unit of Work and you have to create a new DataContext.
I don't know if there are ways to get around this and follow another approach.