I have a Folder table, that represents a folder structure on disc with a possible infinite number of levels.
I am trying to Prefetch all sub-folders, but I get the first folder, and the subfolders of it, but no levels below that.
How can I do this?
Folder table
FolderId
Name
ParentId
EntityCollection<FolderEntity> folders = GetFolders(myFolder);
foreach (FolderEntity folder in folders)
{
OutputFolder(folder);
}
private void OutputFolder(FolderEntity folder)
{
Response.Write(folder.Name);
foreach (FolderEntity subfolder in folder.Folder_)
{
OutputFolder(subfolder);
}
}
public static EntityCollection<FolderEntity> GetFolders(Guid folderId)
{
EntityCollection<FolderEntity> folders = new EntityCollection<FolderEntity>(new FolderEntityFactory());
IRelationPredicateBucket bucket = new RelationPredicateBucket();
bucket.PredicateExpression.Add(FolderFields.FolderId == folderId);
IPrefetchPath2 prefetchPath = new PrefetchPath2((int)EntityType.FolderEntity)
{
FolderEntity.PrefetchPathFolder, //to the ParentFolder
FolderEntity.PrefetchPathFolder_, //EntityCollection of subfolders
};
using (DataAccessAdapter adapter = new DataAccessAdapter())
{
adapter.FetchEntityCollection(folders, bucket, prefetchPath);
}
return folders;
}