2016-10-19 40 views
2

我在數據庫中的以下表:使用ServiceStack OrmLite刪除其他表條件的行

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

的出價列的外鍵表B。 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完成此刪除?

回答

2

對DELETE TABLE JOINS的支持剛剛添加到OrmLite中,可從v4.5.1(現在爲available on MyGet)獲得。

+0

謝謝。那些NuGets解決了這個問題。 –

+0

雖然有一個問題,是在MyGet發佈版本上的NuGets還是他們的beta/RC版本? –

+0

@MartinA它們只是我們在NuGet上發佈的正式版本之間部署的臨時預發佈軟件包。 – mythz