如果在另一个表中调用了delete api,如何删除另一个表格中的ID



我在数据库中有两个表,比如说我删除了角色表中的一行(角色(,

我如何在用户表中删除与已删除角色相关的特定角色ID,该表包含用户信息(有一列包含所有角色ID的列表(?我应该在后台(.NET(还是应该在前端(Javascript-通过在Javascript中使用带有delete axios API调用的update API(

(后端ASP.NET(角色控制器和删除API(额外注意:角色包含许多权限(:

[HttpDelete("role/{id}")]
public async Task<ServiceResponse> DeleteRole(Guid id)
{
return await _service.DeleteRoleAsync(id);
}

(后端ASP.NET(包含已删除权限ID的其他实体(UserRole实体(:

{
public class UserRole : Entity
{
public string Email { get; set; }
public List<Guid> RoleIds { get; set; }
public List<string> ProjectIds { get; set; }
}
}

(后端ASP.NET(具有PUT api的UserRoleController,用于更新用户的角色:

[HttpPut("user-role")]
public async Task<ServiceResponse> UpdateRolesForUser(UserRoleRequest request)
{
return await _service.UpdateUserRoles(request);
}

(后端ASP.NET(用户请求PUT api进行更新:

{
public class UserRoleRequest
{
[EmailAddress]
public string Email { get; set; }
public List<Guid> RoleIds { get; set; }
public List<string> ProjectIds { get; set; }
}
}

(前端(axios异步函数,用于删除角色:

async function deleteRole(id) {
return await axios.delete(`/RolePermission/role/${id}`);
}

(前端(将调用handleDeleteItem删除角色的提示消息:

const onDeleteRole = (record) => {
Modal.confirm({
title: "Are you sure you want to delete this permission?",
okText: "Yes",
okType: "danger",
onOk: () => {
handleDeleteItem([record.id]);
},
});
};

(前端(handleDeleteItem-删除用户表中的角色,但不删除角色ID:

const handleDeleteItem = async (id = null) => {
await deleteRole(id);//delete the role
await getDataRole();//refresh table
};

从您的模型来看,用户模型和角色模型似乎没有使用EF核心来配置关系,对吧?如果是这种情况,从role表中删除角色后,您必须调用relations服务方法,根据角色id查找related Users,然后更新其role属性/列。请参阅以下步骤:

[HttpDelete("role/{id}")]
public async Task<ServiceResponse> DeleteRole(Guid id)
{
//1. based on the role id to query the user table 
//2. update the user's role.
//3. call the following method to delete the role from the role table.
return await _service.DeleteRoleAsync(id);
}

此外,如果您已经使用EF核心配置了关系,则可以使用Cascade Delete来删除相关的实体/属性。请参阅以下教程:

实体框架核心级联删除

级联删除

最新更新