这是我的表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
时显示为null,并且弹出错误,因为值不能为空。那么我哪里出错?
答案 0 :(得分:1)
Find
仅适用于主键。
使用Linq Single
或SingleOrDefault
获取其他属性。
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);
答案 1 :(得分:1)
如果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;
}
}
答案 2 :(得分:-1)
尝试
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;
}