全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Dapper怎么删除数据 Dapper删除操作实例

Dapper 删除数据本质是执行参数化 DELETE SQL 语句,无内置删除方法;需注意事务、软删、批量和级联等场景,推荐按主键/条件单删、事务多表删、UPDATE 软删、IN 或表值参数批量删。

Dapper 删除数据本质就是执行一条 DELETE SQL 语句,它不自带“删除方法”,而是通过 Execute(或 ExecuteAsync)直接运行参数化 SQL。操作简单、高效,但需注意事务、软删、批量和级联等实际场景。

基础单条删除

最常用的方式:按主键或条件删除一条记录,使用参数化防止 SQL 注入。

  • SQL Server 示例:

using (var conn = new SqlConnection(connStr))
{
  int rows = conn.Execute("DELETE FROM Products WHERE Id = @Id", new { Id = 123 });
  Console.WriteLine($"影响 {rows} 行");
}

  • MySQL 示例(注意参数占位符用 @?,取决于驱动):

using (var conn = new MySqlConnection(connStr))
{
  int rows = conn.Execute("DELETE FROM users WHERE id = @id", new { id = 456 });
}

✅ 提示:Dapper 会自动打开连接(如果关闭),无需手动调用 Open();执行完自动释放资源。

带事务的多表删除

当要同时删主表和从表(如删除订单同时删订单项),必须用事务保证原子性。

  • IDbTransaction 显式控制:

using (var conn = new SqlConnection(connStr))
{
  conn.Open();
  using (var tran = conn.BeginTransaction())
  {
    try
    {
      conn.Execute("DELETE FROM OrderItems WHERE OrderId = @OrderId", new { OrderId }, tran);
      conn.Execute("DELETE FROM Orders WHERE Id = @OrderId", new { OrderId }, tran);
      tran.Commit();
    }
    catch
    {
      tran.Rollback();
      throw;
    }
  }
}

软删除替代物理删除

不真正删数据,只标记为“已删除”,适合审计、恢复、权限控制等场景。

  • 模型加字段:public bool IsDeleted { get; set; } = false;
  • 删除操作改为更新:

conn.Execute("UPDATE Products SET IsDeleted = 1 WHERE Id = @Id", new { Id = 789 });

  • 后续所有查询都要加过滤:WHERE IsDeleted = 0
  • 建议给 IsDeleted 字段建索引(尤其数据量大时)

批量删除(高效处理大量数据)

避免循环逐条删(慢且易超时),推荐以下两种主流方式:

  • IN 方式(适合几百到两千条):
    var ids = new List { 1001, 1002, 1003 };
    int affected = conn.Execute("DELETE FROM Logs WHERE Id IN @Ids", new { Ids = ids });

    ⚠ 注意:SQL Server 中 IN 最多支持约 2100 个参数,超量需分批。
  • 表值参数(TVF,适合上万条):
    需先在数据库创建类型(如 CREATE TYPE IntList AS TABLE (Id INT)),再传 DataTable 或 IEnumerable。性能最优,一次往返完成。

基本上就这些。Dapper 删除不复杂,但容易忽略事务安全、软删一致性、批量性能边界这些关键点。按需选择,别硬套一种模式。


# mysql  # app  # sql  # try  # throw  # catch  # bool  # int  # 循环  # using  # public  # 值参数  # var  # delete  # console  # table  # 数据库  # 主键  # 需注意  # 级联  # 都要  # 最多  # 两种  # 自带  # 量大  # 它不  # 先在 


相关文章: 制作网页的网站有哪些,电脑上怎么做网页?  网页设计与网站制作内容,怎样注册网站?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  建站ABC备案流程中有哪些关键注意事项?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站主机数据库如何配置才能提升网站性能?  C++时间戳转换成日期时间的步骤和示例代码  如何在阿里云通过域名搭建网站?  如何在Windows虚拟主机上快速搭建网站?  如何通过多用户协作模板快速搭建高效企业网站?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  视频网站制作教程,怎么样制作优酷网的小视频?  如何快速搭建高效WAP手机网站?  济南网站制作的价格,历城一职专官方网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  jQuery 常见小例汇总  如何配置WinSCP新建站点的密钥验证步骤?  ,有什么在线背英语单词效率比较高的网站?  如何通过虚拟主机快速完成网站搭建?  如何在搬瓦工VPS快速搭建网站?  家具网站制作软件,家具厂怎么跑业务?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在万网自助建站中设置域名及备案?  如何挑选优质建站一级代理提升网站排名?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  建站VPS能否同时实现高效与安全翻墙?  如何在IIS中新建站点并配置端口与物理路径?  如何在景安服务器上快速搭建个人网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站三合一如何选?哪家性价比更高?  网站制作企业,网站的banner和导航栏是指什么?  如何正确下载安装西数主机建站助手?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何用y主机助手快速搭建网站?  大型企业网站制作流程,做网站需要注册公司吗?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何快速搭建FTP站点实现文件共享?  在线制作视频网站免费,都有哪些好的动漫网站?  如何确认建站备案号应放置的具体位置?  制作网站怎么制作,*游戏网站怎么搭建?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  网页设计网站制作软件,microsoft office哪个可以创建网页?  建站之星后台密码如何安全设置与找回?  常州企业网站制作公司,全国继续教育网怎么登录?  C#如何在一个XML文件中查找并替换文本内容  如何在云主机上快速搭建多站点网站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  如何确保西部建站助手FTP传输的安全性?  javascript基本数据类型及类型检测常用方法小结 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。