C#C
C#•13mo ago
!🌸! Rushaan

Collection was modified. Enumeration operation may not execute.

Code:
public async Task<bool> DeleteFolder(Folder folder) 
{
    if (folder.SubFolders.Any()) 
    {
        foreach (Folder f in folder.SubFolders) 
        {
            await DeleteFolder(f);
        }
    }

    if (folder.Files.Any()) 
    {
        foreach (Core.Domain.Entities.File file in folder.Files) 
        {
            DisconnectAndNullifyMetadataAndSharing(file);
            _db.Files.Remove(file);
        }
    }

    folder.ParentFolder = null;
    folder.ParentFolderId = null;

    DisconnectAndNullifyMetadataAndSharing(folder);
    _db.Folders.Remove(folder);

    return await _db.SaveChangesAsync() > 0;
}

// Utility Function
private void DisconnectAndNullifyMetadataAndSharing(BaseForFileFolder entity) 
{
    if (entity.Metadata != null)
    {
        Metadata metadata = entity.Metadata;
        metadata.File = null;

        entity.Metadata = null;
        entity.MetadataId = null;
    }
    if (entity.Sharing != null)
    {
        Sharing sharing = entity.Sharing;
        sharing.File = null;

        entity.Sharing = null;
        entity.SharingId = null;
    }
}



Error:
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   at CloudStoragePlatform.Infrastructure.Repositories.FoldersRepository.DeleteFolder(Folder folder) in C:\Users\rusha\source\repos\Cloud Storage Platform\CloudStoragePlatform.Infrastructure\Repositories\FoldersRepository.cs:line 135


It seems that the error is being triggered because database is being updated while iterating over the collection of entities in the database or is it happening only because properties of collection are being changed while inside the for loop or because of _db.Folders.Remove(...) ?

Also how can I fix it because at the end of the day I want to modify the collection and delete the rows I wanna delete? I got an idea but I think forgot it
Was this page helpful?