2012-12-31 14 views
5

Come si crea una transazione se il mio DAL utilizza dapper-dot-net?Transazioni in "dapper-dot-net"

La mia applicazione C# winform verrà utilizzata in rete e i dati verranno salvati su un server sql centrale.

Il mio caso d'uso richiede l'uso delle transazioni. Posso farlo usando dapper, o dovrò usare qualcosa come NHibernate?

Inoltre, esiste un rischio o una limitazione con questo framework se utilizzo le stored procedure? Dovrò cambiare il mio approccio a causa di eventuali limitazioni?

risposta

8

non ho incontrato alcuna limitazione con l'utilizzo sprocs ei rischi che hai con Dapper sono gli stessi rischi si avrebbe con sprocs

Ecco un semplice esempio su come utilizzare le transazioni con dapper

using (var connection = Db.GetConnection()) 
{ 
    connection.Open(); 
    IDbTransaction transaction = connection.BeginTransaction(); 
    try 
    { 
     var newId= connection.Query<int>(@"Select id from table1 where [email protected]", new{id}, transaction).Single(); 
     connection.Execute(@"INSERT into table1 ...",new {p1, p2}, transaction); 
     connection.Execute(@"INSERT into table2 ...",new {p1, p2}, transaction); 
     transaction.Commit(); 
    } 
    catch (Exception ex) 
    { 
     transaction.Rollback(); 
    } 
} 
+0

:) Vedo che ho dimenticato di dichiarare la transazione come IDbTransaction. – mosesfetters

+0

Grazie per i vostri commenti. Inoltre, spero, non ci sarà alcuna limitazione o problema durante l'utilizzo della stored procedure. In realtà, sono nuovo con il drapper così, ho chiesto. – DPSoni

+0

@DPSoni si comporterà in modo identico a qualsiasi altro utilizzo di ADO.NET –

3

dapper può utilizzare sia le transazioni ado.net che le transazioni implicite. Per le transazioni su ado.net, è sufficiente creare normalmente la transazione e fornirla tramite il parametro transaction disponibile nei metodi principali. Per le transazioni implicite, utilizzare semplicemente TransactionScope normalmente.