3

Payment テーブル、PaymentStatus テーブル、および PaymentHistory テーブルが与えられた場合、Payment テーブルと PaymentHistory テーブルにレコードが関連付けられている PaymentStatus テーブルからステータスを削除する必要があります。当然、支払いテーブルの前に履歴テーブルを削除することを意味します。もちろん、履歴データには、さまざまなステータスでの支払いの複数の記録があります。私が必要としているのは、履歴テーブルの削除の where 句です... SQL は次のようになります。

DELETE FROM PaymentHistory 
WHERE PaymentId IN 
(SELECT Id FROM Payment WHERE PaymentStatusCode = 'Processing')

私が理解していないのは、FluentMigrator でこれを達成する方法です。これは私がこれまでに持っているものですが、 .FromTable() の後に利用できる .Where() または他の拡張メソッドはありません

Delete.FromTable("PaymentHistory").Row(new {PaymentStatusCode = "Processing"});

助けてくれてありがとう。

4

2 に答える 2

7

今、私は尋ねるのがばかげていると感じています....

const string cascadeDeleteScript = 
@"DELETE FROM PaymentHistory WHERE PaymentId IN 
              (SELECT Id FROM Payment WHERE PaymentStatusCode = 'Processing') ";
Execute.Sql(cascadeDeleteScript);
于 2014-06-17T18:37:25.633 に答える