使用ServiceStack OrmLite删除其他表中具有条件的行

时间:2016-10-19 08:33:15

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

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

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

BId列是TableB的外键。 AId是TableA的外键。我想删除表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来完成此删除?

1 个答案:

答案 0 :(得分:2)

最近刚刚向OrmLite添加了对DELETE TABLE JOINS的支持,可以从现在available on MyGet的v4.5.1获得。