CommitFailureHandler:它是如何工作的?

时间:2014-07-10 16:04:13

标签: entity-framework entity-framework-6.1

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

任何人都可以告诉我,如何(使用哪种方法)CommitFailureHandler告诉EF,在发生问题之前已经提交了一个事务?

愿望, 曼弗雷德

2 个答案:

答案 0 :(得分:1)

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

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

谢谢,鲍里斯

答案 1 :(得分:0)

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

但是现在给它第二次看之后,看起来我的第一眼看起来并不好,因为我可以看到(现在很明显)interzeContext.Exception!的委托测试,当有一个异常,当事务表中有一行时,使用interceptionContext.Exception = null清除此异常;

感谢奥地利的祝福和祝福 曼弗雷德