Zoeken…


Database.BeginTransaction ()

Meerdere bewerkingen kunnen worden uitgevoerd voor een enkele transactie, zodat wijzigingen kunnen worden teruggedraaid als een van de bewerkingen mislukt.

using (var context = new PlanetContext())
{
    using (var transaction = context.Database.BeginTransaction())
    {
        try
        {
            //Lets assume this works
            var jupiter = new Planet { Name = "Jupiter" };
            context.Planets.Add(jupiter);
            context.SaveChanges();

            //And then this will throw an exception
            var neptune = new Planet { Name = "Neptune" };
            context.Planets.Add(neptune);
            context.SaveChanges();

            //Without this line, no changes will get applied to the database
            transaction.Commit();
        }
        catch (Exception ex)
        {
            //There is no need to call transaction.Rollback() here as the transaction object
            //will go out of scope and disposing will roll back automatically
        }
    }
}

Merk op dat het een ontwikkelaarsconventie kan zijn om transaction.Rollback() expliciet aan te roepen, omdat het de code voor zichzelf spreekt. Er kunnen ook (minder bekende) query-providers voor Entity Framework zijn die Dipsose correct implementeren, waarvoor ook een expliciete transaction.Rollback() nodig is.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow