我在数据库中有以下表格:
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来完成此删除?