SQL Server Conpact Edition - löschen mehrerer Datensätze

StefanK

Level-1
Beiträge
178
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ich erstelle eine Anwendung mit VB.NET 2010 Framework 4 und einer SQL Server Conpact Edition 3.5 Datenbank.

Die Felder einer Tabelle sind u.a.:
ID
Datum
Seriennummer
...

Der Zugriff erfolgt mit LINQ_TO_SQL.

Nun möchte ich alle Datensätze des gleichen Datums löschen.
Ein einzelner Datensatz lässt sich so löschen:

Code:
        ' get the data context
        Dim dc As New Db_Matrix()

        ' find the customer with a matching Date ID
        Dim matchedDate = (From c In dc.GetTable(Of Parts)() _
                               Where c.Dt = DateID _
                               Select c).SingleOrDefault()

        Try
            ' delete the matching Date
            dc.Parts.DeleteOnSubmit(matchedDate)
            dc.SubmitChanges()

        Catch ex As Exception
            Throw ex
        End Try

Allerdings nur wenn die Abfrage lediglich einen Datensatz findet.

"removeall" scheint es in CE nicht zu geben...

Danke im voraus, Gruß
Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
danke für deine Antwort,

ich habe es jetzt in eine Schleife gepackt. Das löschen von ca. 20.000 Datensätzen dauert allerdings so lange, das ich den Löschvorgang in einen Backgroundworker gepackt habe, damit es den Hauptprozess nicht stört und ich während des löschens noch Datensätze einfügen kann.

Gruß
 
Wenn du eine Anwendung in VB.Net schreibst, wirst du wohl SQL-Statements abschicken können. Probiers einfach mit DELETE FROM Table WHERE DATUM=Datum, Wobei Table der Tabellenname und Datum das gewünschte Datum ist. 20'000 Datensätze mit einer Foreach Schlaufe aus einer SQL Datenbank zu löschen ist wie in einen neuen Ferrari einen 2CV Motor einzubauen. :ROFLMAO:
 
Danke für deine Antwort,

hatte das Projekt zwar abgeschlossen, aber dein Post hat mich nochmal motiviert. Ich hatte es früher schon einmal getestet, mehrere Datensätze zu löschen, habe aber mit 'DeleteAllOnSubmit' immer einen Syntaxfehler bekommen. Nun habe ich das:

Code:
Public Shared Sub DeletePartsByDate2(ByVal DateID As String)

    Dim dbContext As New Db_Matrix()
    Dim query = From p In dbContext.Parts
        Where p.Dt = DateID
        Select p
    Try
        dbContext.Parts.DeleteAllOnSubmit(query)
        dbContext.SubmitChanges()
    Catch ex As Exception
        Throw ex
    End Try

End Sub

testweise implementiert; läuft..!!
 
Zurück
Oben