2

虽然我知道 6.1 中引入的 CommitFailureHandler 做了什么,但当我查看代码时,我看不出它是如何做到的。

谁能告诉我,CommitFailureHandler 如何(使用哪种方法)告诉 EF,在出现问题之前已经提交了事务?

祝愿,曼弗雷德

4

2 回答 2

1

CommitFailureHandler 不会告诉 EF 事务已提交。当 EF 提交事务时,它通过 DbTransactionDispatcher.Commit() 调用 db 事务拦截器。

由于 CommitFailureHandler 扩展了 IDbTransactionInterceptor,它的 Committing() 和 Committed() 方法被调用。可以使用您自己的类扩展 CommitFailureHandler,因为这些方法是在 TransactionHandler 中实现的,TransactionHandler 是 CommitFailureHandler 的父级。

谢谢,鲍里斯

于 2014-08-12T08:54:46.040 回答
0

谢谢你的回复。虽然我知道这个文档,但我没有看到代码是如何实现这个概念的。

但是现在给它第二次看之后,我的第一次看似乎不是那么好,因为我可以看到(现在很清楚)对 interceptionContext.Exception != null 的已提交测试以及何时出现异常以及何时出现事务表中的一行,使用interceptionContext.Exception = null 清除此异常;

来自奥地利 Manfred 的感谢和最良好的祝愿

于 2014-07-21T12:41:51.510 回答