Rollback della transazione Entity Framework 6

Con EF6 hai una nuova transazione che può essere utilizzata come:

using (var context = new PostEntityContainer()) { using (var dbcxtransaction = context.Database.BeginTransaction()) { try { PostInformation NewPost = new PostInformation() { PostId = 101, Content = "This is my first Post related to Entity Model", Title = "Transaction in EF 6 beta" }; context.Post_Details.Add(NewPost); context.SaveChanges(); PostAdditionalInformation PostInformation = new PostAdditionalInformation() { PostId = (101), PostName = "Working With Transaction in Entity Model 6 Beta Version" }; context.PostAddtional_Details.Add(PostInformation); context.SaveChanges(); dbcxtransaction.Commit(); } catch { dbcxtransaction.Rollback(); } } } 

Il rollback è effettivamente necessario quando le cose vanno di lato? Sono curioso perché la descrizione del commit dice: “Commette la transazione del negozio sottostante”.

Mentre la descrizione del rollback dice: “Esegue il rollback della transazione del negozio sottostante”.

Questo mi rende curioso, perché mi sembra che se Commit non viene chiamato, i comandi eseguiti in precedenza non verranno archiviati (cosa che a me sembra logica). Ma se questo è il caso, quale sarebbe il motivo per chiamare la funzione Rollback? In EF5 ho usato TransactionScope che non aveva una funzione di rollback (solo una completa) che mi sembrava logica. A causa dei motivi di MS DTC non riesco più a utilizzare TransactionScope, ma non riesco a utilizzare un try catch come nell’esempio precedente (ovvero, ho solo bisogno del commit).