c# - 使用ServiceStack OrmLite删除其他表中符合条件的行

标签 c# sql sql-server servicestack ormlite-servicestack

我的数据库中有以下表格:

Table C    Table B    Table A
-------    -------    -------
Id         Id         Id
BId        AId

BId 列是 TableB 的外键。 AId 是 TableA 的外键。我想删除表 C 中连接到表 A 中的行的所有行。下面的 SQL(在 SQL Management Studio 中使用)可以解决这个问题:

DELETE [ns].[TableC]
  FROM [ns].[TableC] c
  JOIN [ns].[TableB] b ON c.[BId] = b.[Id]
  WHERE b.[AId] = 530
GO

我尝试使用以下代码:

var query = connection.From<TableC>()
            .Join<TableC, TableB>((c, b) => c.BId == b.Id)
            .Where<TableB>(b => b.AId == 530);    
connection.Delete<TableC>(query);

但这会导致异常,并且通过调用 GetLastSql() 我得到:

DELETE FROM "ns"."TableC" WHERE ("ns"."TableB"."AId" = @0)

如何使用 ServiceStack OrmLite 完成此删除?

最佳答案

对 DELETE TABLE JOINS 的支持最近刚刚添加到 OrmLite,并且从 v4.5.1 开始提供,现在是 available on MyGet .

关于c# - 使用ServiceStack OrmLite删除其他表中符合条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126100/

相关文章:

c# - NotifyCollectionChangedEventArgs 项目不可访问

c# - 如何使用NEST 7.4.1删除索引?

mysql - 如果值存在于另一个表中,如何更新 MYSQL 列?

c# - 将数据从 SQL Server 导出到 PostgreSQL

c# - 如何覆盖常量派生类?

c# - 无状态状态机框架和高 CPU 使用率

mysql - 在优化 SQL 查询方面需要帮助

mysql - Sql Join 花费大量时间

sql-server - 用于报告和 CRUD 操作的单独表/数据库

sql - 将前 1000 条记录从 csv 文件导入到 sql server