C# 使用FluentMigrator基于where子句删除多行
给定一个PaymentStatus表、一个PaymentStatus表和一个PaymentHistory表,我需要从PaymentStatus表中删除PaymentStatus表和PaymentHistory表具有关联记录的状态。当然,这意味着在付款表之前删除历史记录表。当然,历史数据有多个不同状态的付款记录。我需要的是历史记录表delete的where子句。。。sql看起来有点像这样:C# 使用FluentMigrator基于where子句删除多行,c#,delete-row,fluent-migrator,C#,Delete Row,Fluent Migrator,给定一个PaymentStatus表、一个PaymentStatus表和一个PaymentHistory表,我需要从PaymentStatus表中删除PaymentStatus表和PaymentHistory表具有关联记录的状态。当然,这意味着在付款表之前删除历史记录表。当然,历史数据有多个不同状态的付款记录。我需要的是历史记录表delete的where子句。。。sql看起来有点像这样: DELETE FROM PaymentHistory WHERE PaymentId IN (SELEC
DELETE FROM PaymentHistory
WHERE PaymentId IN
(SELECT Id FROM Payment WHERE PaymentStatusCode = 'Processing')
我不明白的是如何在FluentMigrator中实现这一点。这是我到目前为止所拥有的,但是在.FromTable()之后没有.Where()或其他扩展方法可用
提前谢谢你的帮助。现在我觉得问这个问题很愚蠢
const string cascadeDeleteScript =
@"DELETE FROM PaymentHistory WHERE PaymentId IN
(SELECT Id FROM Payment WHERE PaymentStatusCode = 'Processing') ";
Execute.Sql(cascadeDeleteScript);
将表设置为级联删除如何 看起来您必须删除主外键约束,并在考虑级联的情况下重新创建它,但无论何时从PaymentHistory中删除,您都将从PaymentHistory中删除
const string cascadeDeleteScript =
@"DELETE FROM PaymentHistory WHERE PaymentId IN
(SELECT Id FROM Payment WHERE PaymentStatusCode = 'Processing') ";
Execute.Sql(cascadeDeleteScript);