[英]Entity Framework 5 Remove() not deleting from the database
我有一個User對象,當使用DbContext上的Remove()刪除它時,它沒有從數據庫中刪除。 奇怪的是,我用於檢索用戶的查詢不再返回。
此代碼可在我的應用程序中使用,並且可以毫無問題地用於其他實體。
我很感激關於這可能是什么的建議,因為我很困惑!
#region Delete
public virtual void Delete(User entity)
{
var user = _context.Users.FirstOrDefault(u => u.UserId == entity.UserId);
if (user != null)
{
user.Roles.Clear();
var actionHistories = _context.ActionHistories.Where(u => u.User.UserId == user.UserId);
foreach (var actionHistory in actionHistories)
{
_context.ActionHistories.Remove(actionHistory);
}
_context.Users.Remove(user);
_context.SaveChanges();
}
}
#endregion
PS我刪除了刪除Roles和ActionHistories的代碼,以測試問題是否出在相關實體的存在,但是它不能解決問題。
嘗試添加:
_context.Entry(user).State = EntityState.Modified;
之前
_context.SaveChanges();
我使用與@ tomsullivan1989相同的答案,但使用EntityState.Deleted;。 它解決了我類似的問題。 出現錯誤消息的關系無法更改,因為一個或多個外鍵屬性不可為空
我的建議是嘗試使用配置文件工具(例如,從休眠犀牛的EFprof中免費試用)。
它會准確顯示SQL EF生成的內容,因此您可以觀察經過SaveChanges時發生的情況。
聽起來確實很奇怪,也許正在拋出探查器可能揭示的一些靜默SQL錯誤。
問題是在這種情況下必須在主上下文中刪除“虛擬” _context
Database.Context.Remove<ActionHistories>(actionHistory);
然后在主上下文中保存更改
Database.Context.SaveChanges();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.