我正在 Blazor 中使用 CRUD 应用程序,在执行删除用户功能时遇到错误。我尝试了很多方法但都失败了。这是我的 3 个文件中的代码。
DAO.cs
public void DeleteUser(List<int> userIds)
{
string deleteQuery = "DELETE FROM Users WHERE UserID IN (@userIds)";
Dictionary<string, object> delParams = new Dictionary<string, object> {
{ "@userIds", userIds }
};
sqlManager.ExecuteNonQuery(deleteQuery, delParams);
}
服务.cs
public void DeleteUsers(List<int> userIds)
{
dao.DeleteUser(userIds);
}
用户.razor
private List<Users> selectedUsers = new List<Users>();
private async Task DeleteUser()
{
List<int> userIds = selectedUsers.Select(u => u.UserID).ToList();
service.DeleteUsers(userIds);
NavigationManager.NavigateTo("/User", forceLoad: true);
}
我无法删除用户并出现此错误:
如何修复此错误
尝试修改这个
服务中.cs
public void DeleteUsers(params int[] userIds)
{
dao.DeleteUser(userIds);
}
通过此更改,您可以将 userIds 列表传递到 DAO 层。您需要将其作为参数数组而不是列表传递。
在 DAO.cs 中:
public void DeleteUser(params int[] userIds)
{
string deleteQuery = "DELETE FROM Users WHERE UserID IN (" + string.Join(",", userIds) + ")";
sqlManager.ExecuteNonQuery(deleteQuery);
}
你必须改变sql查询的方式来允许多个参数
在私有异步任务DeleteUser()方法中 更改传递参数的方式,转换为列表
service.DeleteUsers(userIds.ToArray())