Skip to content

Transactions

Wade Baglin edited this page Jan 24, 2016 · 9 revisions

PetaPoco supports all forms of ADO.net transactions and includes its own dept tracking (nesting) transaction support.

Isolation Levels

Fluent configuration

var db = config.Build()
         .UsingConnectionString("cs")
         .UsingProvider<SqlServerDatabaseProvider>()
         .UsingIsolationLevel(IsolationLevel.Chaos)
         .Create();

Constructor configuration

var db = new Database("MyConnectionStringName") { IsolationLevel = IsolationLevel.Chaos };

Transactions

PetaPoco dept tracking transactions

var db = new Database();

try
{
    db.BeginTransaction();

    // Some transactional DB work

    db.CompleteTransaction();
}
catch (Exception e)
{
    db.AbortTransaction();
}

PetaPoco dept tracking transactions with using syntax

var db = new Database();

using (var transaction = db.GetTransaction())
{
    // Some transactional DB work

    transaction.Complete();
}

Ambient transactions

var config = DatabaseConfiguration
               .Build()
               .UsingCommandTimeout(180);

using (TransactionScope scope = new TransactionScope())
{
    var db = config.Create();

    // Some transactional DB work

    scope.Complete();
}