虽然我知道 6.1 中引入的 CommitFailureHandler 做了什么,但当我查看代码时,我看不出它是如何做到的。
谁能告诉我,CommitFailureHandler 如何(使用哪种方法)告诉 EF,在出现问题之前已经提交了事务?
祝愿,曼弗雷德
虽然我知道 6.1 中引入的 CommitFailureHandler 做了什么,但当我查看代码时,我看不出它是如何做到的。
谁能告诉我,CommitFailureHandler 如何(使用哪种方法)告诉 EF,在出现问题之前已经提交了事务?
祝愿,曼弗雷德
CommitFailureHandler 不会告诉 EF 事务已提交。当 EF 提交事务时,它通过 DbTransactionDispatcher.Commit() 调用 db 事务拦截器。
由于 CommitFailureHandler 扩展了 IDbTransactionInterceptor,它的 Committing() 和 Committed() 方法被调用。可以使用您自己的类扩展 CommitFailureHandler,因为这些方法是在 TransactionHandler 中实现的,TransactionHandler 是 CommitFailureHandler 的父级。
谢谢,鲍里斯
谢谢你的回复。虽然我知道这个文档,但我没有看到代码是如何实现这个概念的。
但是现在给它第二次看之后,我的第一次看似乎不是那么好,因为我可以看到(现在很清楚)对 interceptionContext.Exception != null 的已提交测试以及何时出现异常以及何时出现事务表中的一行,使用interceptionContext.Exception = null 清除此异常;
来自奥地利 Manfred 的感谢和最良好的祝愿