c# - 使用 Dapper 删除 List<T>

标签 c# .net dapper

使用 Dapper 或 Dapper.SimpleCRUD , 如何从表中删除列表。像这样的东西:

    public static void DeleteList<T>(List<T> listToDelete)
    {
        using (var connection = OpenConnection())
        {
            connection.Delete<T>(listToDelete);
        }
    }

但是当我尝试这样做时,我得到...

The member of type DataModel.MyTable cannot be used as a parameter value

WHERE 子句是唯一的选择吗?

最佳答案

Dapper 不了解您的实体;它不像 Entity Framework 。您需要自己执行 SQL 命令或存储过程。

public static void DeleteList(List<int> idToDelete)
{
    using (IDbConnection conn = new SqlConnection(connString))
    {
        conn.Open();
        foreach (int id in idToDelete)
        {
            conn.Execute(@"DELETE FROM [User] WHERE Id = @Id", new {Id = id});
        }
    }
}

Execute a Command multiple times

public static void DeleteList(List<int> idToDelete)
{
    using (IDbConnection conn = new SqlConnection(connString))
    {
        conn.Open();
        conn.Execute(@"DELETE FROM [User] WHERE Id = @Id",
            idToDelete.Select(x => new { Id = x }).ToArray());
    }
}

关于c# - 使用 Dapper 删除 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45971254/

相关文章:

c# - 使用 Fluent API 级联删除

c# - 自定义(派生)List<T>

c# - 目录刷新期间遇到错误,未使用新的 dll

c# - 来自给定有限列表的linq无限列表

c# - 这是使用 Dapper 的正确方法还是我做错了?

c# - 是否可以在 C# 中使用一组变量/动态字段声明匿名类型?

c# - 如何解锁 ConnectNamedPipe 和 ReadFile? [C#]

c++ - 未从 ASP.NET WebApi 中的 PATH 加载的 native DLL

c# - VSTO获取Excel范围并放入文本框

Dapper-Dot-Net 示例代码