Ich habe eine Datenbank mit etwa 180.000 Datensätze. Ich versuche, eine PDF-Datei an jeden dieser Datensätze anzuhängen. Jedes pdf ist ungefähr 250 kb groß. Nach ungefähr einer Minute beginnt mein Programm jedoch mit etwa einem GB Speicher und ich muss es stoppen. Ich habe versucht, es so zu tun, dass der Verweis auf jedes linq-Objekt entfernt wird, sobald es aktualisiert wird, aber das scheint nicht zu helfen. Wie kann ich die Referenz klarstellen?linq submitchanges hat keinen Speicher mehr
Danke für Ihre Hilfe
Private Sub uploadPDFs(ByVal args() As String)
Dim indexFiles = (From indexFile In dataContext.IndexFiles
Where indexFile.PDFContent = Nothing
Order By indexFile.PDFFolder).ToList
Dim currentDirectory As IO.DirectoryInfo
Dim currentFile As IO.FileInfo
Dim tempIndexFile As IndexFile
While indexFiles.Count > 0
tempIndexFile = indexFiles(0)
indexFiles = indexFiles.Skip(1).ToList
currentDirectory = 'I set the directory that I need
currentFile = 'I get the file that I need
writePDF(currentDirectory, currentFile, tempIndexFile)
End While
End Sub
Private Sub writePDF(ByVal directory As IO.DirectoryInfo, ByVal file As IO.FileInfo, ByVal indexFile As IndexFile)
Dim bytes() As Byte
bytes = getFileStream(file)
indexFile.PDFContent = bytes
dataContext.SubmitChanges()
counter += 1
If counter Mod 10 = 0 Then Console.WriteLine(" saved file " & file.Name & " at " & directory.Name)
End Sub
Private Function getFileStream(ByVal fileInfo As IO.FileInfo) As Byte()
Dim fileStream = fileInfo.OpenRead()
Dim bytesLength As Long = fileStream.Length
Dim bytes(bytesLength) As Byte
fileStream.Read(bytes, 0, bytesLength)
fileStream.Close()
Return bytes
End Function
Ich dachte daran, es auf diese Weise zu machen, aber die erste Abfrage auszuführen, die mein Programm oft verlangsamen würde. Ich hatte gehofft, es gäbe einen besseren Weg. – Leon
vielen Dank für Ihre Hilfe btw – Leon
@Leon: Mit nur 180.000 Aufzeichnungen sollte eine Suche blitzschnell sein. Wenn dies nicht der Fall ist, sollten Sie sich Ihre Indexierung ansehen (insbesondere auf "PDFFolder"). Vielleicht von 10 auf 100 aufsteigen ... versuche im Grunde, ein angemessenes Gleichgewicht zu finden. –