簡體   English   中英

如何使用linq查詢從數據庫中刪除一行?

[英]How to delete a single row from database using linq query?

這是我的桌子ts_grp_perm_mapping

grp_permid     grp_id      perm_id
22              4           1
23              2           2

這是我刪除行的代碼。 usr_groupId下面grp_id上文表。 usr_doctypeids下面perm_id上文表。

public int saveNewUser(int usr_groupId, int usr_doctypeids)
{
     ts_grp_perm_mapping tm = db.ts_grp_perm_mapping.Find(usr_groupId);
     db.ts_grp_perm_mapping.Remove(tm);
     int rowiseffected=db.SaveChanges();
     return rowiseffected;
}

當我跟蹤時,我的tm顯示為空,並且錯誤彈出,就像值不能為空。 所以我要去哪里錯了?

如果grp_id是主鍵

 public int saveNewUser(int usr_groupId, int usr_doctypeids)
    {
         ts_grp_perm_mapping tm = db.ts_grp_perm_mapping.SingleOrDefault(ts => ts.grp_id == usr_groupId);
         if(tm != null)
             {
         db.ts_grp_perm_mapping.Remove(tm);
         int rowiseffected=db.SaveChanges();
         return rowiseffected;
    }
    else
    {
    return 0;
    }
    }

如果grp_id不是主鍵

public int saveNewUser(int usr_groupId, int usr_doctypeids)
        {
             ts_grp_perm_mapping tm = db.ts_grp_perm_mapping.FirstOrDefault(ts => ts.grp_id == usr_groupId);
             if(tm != null)
                 {
             db.ts_grp_perm_mapping.Remove(tm);
             int rowiseffected=db.SaveChanges();
             return rowiseffected;
        }
        else
        {
        return 0;
        }
        }

Find僅適用於主鍵。 對其他屬性使用Linq SingleSingleOrDefault

public int saveNewUser(int usr_groupId, int usr_doctypeids)
{
     ts_grp_perm_mapping tm = db.ts_grp_perm_mapping.SingleOrDefault(ts => ts.grp_id == usr_groupId);
     if(tm == null)
         throw new Exception($"The grp_id {usr_groupId} was not found");
     db.ts_grp_perm_mapping.Remove(tm);
     int rowiseffected=db.SaveChanges();
     return rowiseffected;
}

並盡可能使您的方法async並使用

ts_grp_perm_mapping tm = await db.ts_grp_perm_mapping.SingleOrDefaultAsync(ts => ts.grp_id == usr_groupId).ConfigureAwait(false);
//...
int rowiseffected = await db.SaveChangesAsync().ConfigureAwait(false);

嘗試

        public int saveNewUser(int usr_groupId, int usr_doctypeids) 
    { 
      var tm = db.ts_grp_perm_mapping.Where(a => a.grp_id == usr_groupId); 
      db.ts_grp_perm_mapping.Remove(tm); 
      int rowiseffected=db.SaveChanges();
      return rowiseffected;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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