使用 ServiceStack OrmLite 删除条件为其他 table 的行

Using ServiceStack OrmLite to delete rows with condition in other table

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

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

BId 列是 TableB 的外键。 AId 是 TableA 的外键。我想删除 Table C 中与 TableA 中的某行相连的所有行。以下 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 中,并且可以从现在 available on MyGet.

的 v4.5.1 开始使用