2014-07-10 5 views
2

alors que je sais ce que CommitFailureHandler, qui a été introduit avec 6.1, fait, je ne vois pas comment il le fait, quand je regarde dans le code.CommitFailureHandler: Comment ça marche?

Quelqu'un peut-il me dire, comment (avec quelle méthode) CommitFailureHandler dit à EF, qu'une transaction a été validée avant qu'il y ait un problème?

Wishes, Manfred

Répondre

0

Thx pour votre réponse. Alors que je connaissais ce document, je n'ai pas vu, comment le code met en œuvre ce concept.

Mais après l'avoir regardé un deuxième regard maintenant, il semble que mon premier regard n'était pas si bon, parce que je peux voir (clairement maintenant) que les tests Commited pour interceptionContext.Exception! = Null et quand il y a eu une exception et quand il y a une ligne dans la table de transaction, cette exception est effacée en utilisant interceptionContext.Exception = null;

Merci et meilleurs voeux Autriche Manfred

1

Le CommitFailureHandler ne dit pas EF la transaction a été commise. Lorsque EF valide les transactions, il appelle l'intercepteur de transaction db via DbTransactionDispatcher.Commit().

Lorsque CommitFailureHandler étend IDbTransactionInterceptor, ses méthodes Committing() et Committed() sont appelées. Vous pouvez étendre le CommitFailureHandler avec votre propre classe, car ces méthodes sont implémentées dans TransactionHandler, qui est un parent de CommitFailureHandler.

Merci, Boris