0
这是我的代码:实体框架4.1例外
public void DeleteFolder(Entities.DocumentFolder folder)
{
DeleteFilesFromServer(folder.Id);
_dbContext.Entry(folder).State = EntityState.Deleted;
_dbContext.SaveChanges();
}
public void DeleteFilesFromServer(int id)
{
var allDocuments = _dbContext.Document.Where(x => x.FolderId == id).ToList();
foreach (var filePath in allDocuments.Select(document => HttpContext.Current.Server.MapPath("~/Documents/") + document.DocumentFileName).Where(System.IO.File.Exists))
{
System.IO.File.Delete(filePath);
}
}
public class DocumentFolder
{
public DocumentFolder()
{
Documents=new List<Document>();
}
public int Id { get; set; }
public string FolderName { get; set; }
public int ParentFolderId { get; set; }
public List<Document> Documents { get; set; }
}
public class Document
{
public int Id { get; set; }
public string DocumentName { get; set; }
public string DocumentFileName { get; set; }
public int FolderId { get; set; }
public virtual DocumentFolder Folder { get; set; }
}
通过执行删除操作,我得到了以下异常:
System.InvalidOperationException:操作失败:的关系无法被改变因为一个或多个外键属性是不可空的。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性指定另一个非空值,或者必须删除不相关的对象。
如果我删除DeleteFilesFromServer(int id)
方法的删除工作。有人能帮我吗?
如何解决它? – Jameel 2012-08-16 10:51:59
在删除DocumentFolder之前,请删除列表中的所有文档DocumentFolder.Documents – 2012-08-16 12:45:31
我已收到答案,感谢您获取有价值的信息。 allDocuments.ForEach(DOC => _ dbContext.Document.Remove(DOC)); _dbContext.SaveChanges(); – Jameel 2012-08-17 05:35:01