簡體   English   中英

實體框架5 Remove()不能從數據庫中刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM