Mit EF6 haben Sie eine neue Transaktion, die wie folgt verwendet werden kann:
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();
}
}
}
Wird ein Rollback tatsächlich benötigt, wenn die Dinge seitwärts gehen? Ich bin neugierig, weil in der Commit-Beschreibung steht: "Commit die zugrunde liegende Store-Transaktion."
In der Rollback-Beschreibung heißt es: "Rollt die zugrunde liegende Geschäftstransaktion zurück."
Das macht mich neugierig, denn es sieht so aus, als würden die zuvor ausgeführten Befehle nicht gespeichert, wenn Commit nicht aufgerufen wird (was mir logisch erscheint). Aber wenn dies der Fall ist, was wäre der Grund, die Rollback-Funktion aufzurufen? In EF5 habe ich TransactionScope verwendet, das keine Rollback-Funktion (nur eine vollständige) hatte, was mir logisch erschien. Aus MS-DTC-Gründen kann ich das TransactionScope nicht mehr verwenden, aber ich kann auch keinen Try-Catch wie im obigen Beispiel verwenden (dh ich benötige nur das Commit).