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