虽然我知道6.1中引入的CommitFailureHandler,当我查看代码时,我看不出它是如何做到的。
任何人都可以告诉我,如何(使用哪种方法)CommitFailureHandler告诉EF,在发生问题之前已经提交了一个事务?
愿望, 曼弗雷德
答案 0 :(得分:1)
CommitFailureHandler不告诉EF事务已提交。 当EF提交事务时,它通过DbTransactionDispatcher.Commit()调用db事务拦截器。
当CommitFailureHandler扩展IDbTransactionInterceptor时,会调用其Committing()和Committed()方法。可以使用您自己的类扩展CommitFailureHandler,因为这些方法是在TransactionHandler中实现的,它是CommitFailureHandler的父级。
谢谢,鲍里斯
答案 1 :(得分:0)
谢谢您的回复。虽然我知道这个文档,但我没有看到,代码是如何实现这个概念的。
但是现在给它第二次看之后,看起来我的第一眼看起来并不好,因为我可以看到(现在很明显)interzeContext.Exception!的委托测试,当有一个异常,当事务表中有一行时,使用interceptionContext.Exception = null清除此异常;
感谢奥地利的祝福和祝福 曼弗雷德