我正在开发一个像C#asp.net mvc这样的网站Mega(文件存储)作为个人项目,并且遇到了一些障碍。我有两个类,文件和文件夹:
public class File
{
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public string Checksum { get; set; }
public int Size { get; set; }
public virtual Folder ParentFolder { get; set; }
public virtual User Owner { get; set; }
}
public class Folder
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Folder ParentFolder { get; set; }
public virtual User Owner { get; set; }
}
有些元素尚未实现,所以如果有些内容似乎缺失,请不要感到惊讶;) 关于删除文件夹,我遇到了一些问题:
public IHttpActionResult DeleteFolder(int id)
{
Folder folder = db.Folders.Find(id);
if (folder == null)
{
return NotFound();
}
FilesController filesController = new FilesController();
var Folders = db.Folders.Where(a => a.ParentFolder.Id == id);
var Files = db.Files.Where(b => b.ParentFolder.Id == id);
foreach (File f in Files)
{
filesController.DeleteFile(f.Id);
}
foreach (Folder f in Folders)
{
DeleteFolder(f.Id);
}
db.Folders.Remove(folder);
db.SaveChanges();
return Ok(folder);
}
从我的FoldersController调用此方法,它找到属于给定文件夹(id)的文件列表,并对子文件夹执行相同操作。然后它从FilesController调用DeleteFile方法并删除所有这些方法,并再次递归调用DeleteFolder方法,以便删除文件夹树的其余部分(至少是子部分)。 问题是,当我实际调用deleteFolder方法时,我得到一个“System.Data.Entity.Infrastructure.DbUpdateException”,似乎无法弄清楚为什么......有没有人碰巧有任何想法? (它可能类似于并发控制问题吗?)。