我的数据库中有以下表格:
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/