You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 07:38:08