private void ExecuteWhenDirectoryScanned(FileScannerProcessEventArgs e) { //DBFolderInfo monitoredFolderInfo = null; //IList<DBFolderInfo> monitoredFolderInfos; //DBFolderInfo existFolder = DBCache.Folders.FirstOrDefault(folder => 0 == string.Compare(folder.Path, e.CurrentDir.FullName, true)); //if (null == existFolder) //{ // monitoredFolderInfo = DBFolderInfo.Convert(e.CurrentDir); // monitoredFolderInfos = new List<DBFolderInfo>() { // monitoredFolderInfo // }; // DBHelper.InsertFolders(monitoredFolderInfos); //} //else //{ // monitoredFolderInfo = existFolder; // monitoredFolderInfos = new List<DBFolderInfo>() { // monitoredFolderInfo // }; // DBHelper.UpdateFolders(monitoredFolderInfos); //} //monitoredFolderInfo.IsScanned = true; //newMonitoredFolderInfos.Add(monitoredFolderInfo); DBFolderInfo existFolder = DBCache.Folders.FirstOrDefault(folder => 0 == string.Compare(folder.Path, e.CurrentDir.FullName, true)); if (!existFolder.IsNull()) { existFolder.IsScanned = true; DBHelper.UpdateFolders(new List <DBFolderInfo>() { existFolder }); } IList <DBFileInfo> filesToAdd = new List <DBFileInfo>(); IList <DBFileInfo> filesToUpgrade = new List <DBFileInfo>(); foreach (ScannedFileInfo fileInfo in e.Files) { if (null == fileInfo || null == fileInfo.File) { continue; } DBFileInfo newfile = DBFileInfo.Convert(fileInfo); //newfile.ParentID = monitoredFolderInfo.ID; DBFileInfo findFile = DBCache.Files.FirstOrDefault(file => 0 == string.Compare(fileInfo.File.FullName, file.Path)); if (findFile.IsNull()) { filesToAdd.Add(newfile); } else { filesToUpgrade.Add(findFile); } } //if (monitoredFolderInfo.ID == -1) //{ // int i = 0; // ; //} DBHelper.InsertFiles(filesToAdd); DBHelper.UpdateFiles(filesToUpgrade); }