Transactions dans "dapper-dot-net"

architecture dapper data-access-layer

Question

Comment créer une transaction si ma DAL utilise dapper-dot-net?

Mon application c # winform sera utilisée en réseau et les données seront enregistrées sur un serveur sql central.

Mon cas d'utilisation nécessite l'utilisation de transactions. Puis-je utiliser dapper ou dois-je utiliser quelque chose comme NHibernate?

En outre, ce cadre présente-t-il un risque ou une limitation si j'utilise des procédures stockées? Dois-je modifier mon approche en raison de limitations possibles?

Réponse acceptée

Je n'ai rencontré aucune limitation dans l'utilisation des sprocs et les risques que vous avez avec dapper sont les mêmes que ceux que vous auriez avec les sprocs

Voici un exemple simple d'utilisation des transactions avec dapper

using (var connection = Db.GetConnection())
{
     connection.Open();
     IDbTransaction transaction = connection.BeginTransaction();
     try
     {
         var newId= connection.Query<int>(@"Select id from table1 where id=@id", 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();
     }
}

Réponse d'expert

Dapper peut utiliser à la fois les transactions ado.net et les transactions implicites. Pour les transactions ado.net, créez simplement la transaction normalement et fournissez-la via le paramètre de transaction disponible sur les méthodes principales. Pour les transactions implicites, utilisez simplement TransactionScope normalement.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi