使用EF Core MongoDB提供程序或MongoDB C# Driver更新Project文档嵌套树形文件夹结构失败的解决方案求助
使用EF Core MongoDB提供程序或MongoDB C# Driver更新Project文档嵌套树形文件夹结构失败的解决方案求助
各位大佬好,我最近开发时碰到了个棘手问题:尝试给Project文档的FolderStructure属性添加嵌套子文件夹时,操作总是无法生效。我用的是MongoDB C# Driver搭配支持MongoDB的EF Core提供程序。
目前的状况是,FolderStructure顶层层级的更新能正常成功,但一旦尝试插入或更新嵌套文件夹,要么毫无反应,要么悄无声息地失败。看起来EF Core的MongoDB提供程序似乎只支持更新顶层属性,对深度嵌套的结构处理得不太好。
我现在想找一种可靠的方式——不管是用原生MongoDB驱动的原始查询,还是兼容的EF Core方法——来实现FolderStructure层级里嵌套文件夹的更新。
先贴我的实体类代码:
public class Project { [BsonId] [BsonRepresentation(BsonType.ObjectId)] public ObjectId ProjectId { get; set; } public List<TreeFolder> FolderStructure { get; set; } = new List<TreeFolder>(); [Required] public int CompanyId { get; set; } } public class TreeFolder { [Required] public string Id { get; set; } [Required] public string Label { get; set; } public List<TreeFolder> Children { get; set; } = new List<TreeFolder>(); public List<TreeFile> Files { get; set; } = new List<TreeFile>(); }
我试过两种更新方式,但都没能解决嵌套更新的问题:
1. 使用MongoDB Driver更新
Project? projectFound = await _context.Projects.FirstOrDefaultAsync(p => p.ProjectId.ToString() == projectId); List<TreeFolder> folderStructure = ... // 这里是我修改后的包含嵌套文件夹的结构 var filter = Builders<Project>.Filter.Eq(p => p.ProjectId, ObjectId.Parse(projectId)); var update = Builders<Project>.Update.Set(p => p.FolderStructure, folderStructure); await _projects.UpdateOneAsync(filter, update);
2. 使用EF Core MongoDB提供程序更新
projectFound.FolderStructure = folderStructure; await _context.SaveChangesAsync();
这两种方式更新顶层文件夹都没问题,但嵌套子文件夹的更新完全没效果。有没有大佬能帮忙看看问题出在哪?或者有没有更合适的方法处理这种嵌套树形结构的更新?
内容来源于stack exchange
相关产品推荐
相关产品推荐

