2016-10-19 5 views
2

を条件と行を削除するServiceStack OrmLiteを使用した:私は、データベース内の次のテーブルを持っている他のテーブルに

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

入札の欄には、テーブルBへの外部キーです。 AIdはTableAの外部キーです。 TableAの行に接続されているすべての行を削除します。私は次のコードを使用してみました

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

:(SQL Management Studioで使用される)次のSQLは、トリックん

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

しかし、NuGetsはMyGetのリリース版かベータ版かRC版ですか? –

+0

@MartinAこれらは、NuGetで公開される公式リリースの間に展開する暫定的なプレリリースパッケージです。 – mythz

関連する問題