Con EF6 tiene una nueva transacción que se puede utilizar como:
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();
}
}
}
¿Es realmente necesaria la reversión cuando las cosas van de lado? Tengo curiosidad porque la descripción de Commit dice: "Confirma la transacción de la tienda subyacente".
Mientras que la descripción de Rollback dice: "Retrotrae la transacción de la tienda subyacente".
Esto me da curiosidad, porque me parece que si no se llama a Commit, los comandos ejecutados anteriormente no se almacenarán (lo que me parece lógico). Pero si ese es el caso, ¿cuál sería la razón para llamar a la función Rollback? En EF5 utilicé TransactionScope que no tenía una función Rollback (solo un Completo) que me parecía lógico. Debido a razones de MS DTC, ya no puedo usar TransactionScope, pero tampoco puedo usar una captura de prueba como en el ejemplo anterior (es decir, solo necesito la confirmación).