This entry is part of a series, Linq to SQL Quirks»
My previous post about problems deleting can be partly handled with an extension method to the Linq to SQL Table(Of T) class with something like this…
Public Sub DeleteOnSubmitOrDetach(Of T As Class)(ByVal table As System.Data.Linq.Table(Of T), ByVal o As T)
Dim IDProperty = o.GetType.GetProperty("ID")
If IDProperty Is Nothing Then
Throw New System.MissingFieldException("Trying to delete object of type " & GetType(T).Name & " - does not have an ID field")
End If
If IDProperty.GetValue(o, New Object() {}) = 0 Then
table.InsertOnSubmit(o)
End If
table.DeleteOnSubmit(o)
End Sub
Note that you’ll need to import System.ComponentModel and System.Reflection and possibly some others, and it assumes that you have an IDENTITY ID field by that name on all of your classes that you use this with.
Entries in this series:
- Linq to SQL Quirks Part 1: Implicit Inserts
- Linq to SQL Quirks Part 2: DeleteOnSubmit and Entity not Attached
- Linq to SQL Quirks Part 3 - Extension to Get Around the Delete Problem
- Linq to SQL Quirks Part 4: Circular References
No related posts.
Tags: .NET, .NET 3.5, Delete, DeleteOnSubmit, Extension Methods, Linq, Linq to SQL, Workarounds











