当FK存在时使用RemoveRange删除

时间:2016-08-01 12:51:08

标签: sql-server entity-framework entity-framework-6

我知道这会出现很多,但我想知道如何获取我要删除的实体列表对成功与否有任何影响。

在下面的代码中,我收到一个错误抱怨FK约束冲突 在这种情况下,表PaymentInvoice作为对WarehouseStatementBatchPayment的FK引用,而VaultStatementBatchPayment又具有对WarehouseStatementBatch的FK引用。所以我应该能够从子表中删除记录(在本例中为PaymentInvoice)。我可以理解我是否从其他表中删除,因为PaymentInvoice中的记录仍然会引用我正在删除的那些。在这种情况下不是这样吗?

由于我通过加入另外两个来获取PaymentInvoice记录列表,这是否会影响我删除它们的能力?

                        var PaymentInvoiceList = (from b0 in ctx.PaymentInvoices
                                                    join c0 in ctx.WarehouseStatementBatchPayments on b0.WarehouseStatementBatchPaymentID equals c0.ID
                                                    join d0 in ctx.WarehouseStatementBatches on c0.WarehouseStatementBatchID equals d0.ID
                                                    where d0.ID == b0.ID
                                                    select b0)
                                            .ToList();
                        ctx.PaymentInvoices.RemoveRange(PaymentInvoiceList);

我得到的错误: DELETE语句与REFERENCE约束冲突\“FK_PaymentInvoice_WarehouseStatementBatchPayment \”

FK存在于PaymentInvoice表中。

此外,我检查了PaymentInvoice表中的任何其他可能的依赖项,并且没有(除了一些视图和存储过程)。一些存储过程已经作为函数导入被引入到数据模型中,但这并不是直接关注的,因为错误消息只是抱怨FK约束。

我还应该检查什么?

0 个答案:

没有答案