2016-10-19 3 views
2

Ich habe die folgenden Tabellen in der Datenbank zu löschen:ServiceStack OrmLite Mit Zeilen mit Bedingung in anderer Tabelle

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

die Bid-Spalte ist ein Fremdschlüssel zu TableB. AId ist ein Fremdschlüssel für TableA. Ich möchte alle Zeilen aus der Tabelle C löschen, die mit einer Zeile in TableA verbunden ist. Die folgende SQL (verwendet in SQL Management Studio) funktioniert der Trick:

DELETE [ns].[TableC] 
    FROM [ns].[TableC] c 
    JOIN [ns].[TableB] b ON c.[BId] = b.[Id] 
    WHERE b.[AId] = 530 
GO 

ich den folgenden Code versucht, mit:

var query = connection.From<TableC>() 
      .Join<TableC, TableB>((c, b) => c.BId == b.Id) 
      .Where<TableB>(b => b.AId == 530);  
connection.Delete<TableC>(query); 

Aber dies führt zu einer Ausnahme und von Aufrufen GetLastSql() erhalte ich:

DELETE FROM "ns"."TableC" WHERE ("ns"."TableB"."AId" = @0) 

Wie kann ich ServiceStack Ormlite verwenden, um dieses Löschen durchzuführen?

Antwort

2

Unterstützung für DELETE TABLE JOINS wurde vor kurzem zu Ormlite hinzugefügt und ist ab Version 4.5.1 verfügbar, die jetzt available on MyGet ist.

+0

Vielen Dank. Diese NuGets haben das Problem gelöst. –

+0

Eine Frage, sind NuGets auf MyGet Release-Versionen oder sind sie Beta/RC-Versionen? –

+0

@MartinA Es handelt sich lediglich um vorläufige Pre-Release-Pakete, die wir zwischen unseren offiziellen Veröffentlichungen veröffentlichen, die auf NuGet veröffentlicht werden. – mythz

Verwandte Themen