我无法删除用户

问题描述 投票:0回答:1

我正在 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);
    }

我无法删除用户并出现此错误:

enter image description here

如何修复此错误

c# .net sql-server blazor crud
1个回答
0
投票

尝试修改这个

服务中.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())
© www.soinside.com 2019 - 2024. All rights reserved.