2 votes

Gestion des transactions F#

J'ai envisagé de mettre en œuvre un système de paiement électronique en F#. L'une des exigences critiques est la gestion des transactions.

J'ai utilisé le TransactionScope avec Dapper et ça a bien marché. Je pouvais utiliser Tranq pour gérer les transactions de la base de données, mais j'aimerais utiliser quelque chose comme TransactionScope pour gérer les opérations en ligne.

Relativement nouveau dans F#, je ne sais pas s'il y a quelque chose qui soit équivalent à

using (var trans = new TransactionScope())
{
    ...//operations
    trans.Complete();
}

Si l'approche consistant à traduire ligne par ligne de C# en F# est erronée, existe-t-il un moyen plus "fonctionnel" de gérer les transactions ?

8voto

Dan Fitch Points 1596

F# possède un système similaire using en C#.

using (new Thing()) (fun x -> x.DoStuff ... )

Mais il y a aussi un use liaison en F# qui fonctionne exactement comme let sauf qu'il appelle Dispose lorsque l'objet sort du champ d'application. Il n'est pas très difficile de créer un nouveau type qui engloberait TransactionScope et appelle Complete quand il est éliminé, s'il n'a pas été annulé par le code...

Il serait également possible de faire un créateur de flux de travail s'occuper des transactions.

Cependant, il est préférable d'utiliser une couche de base de données telle qu'Entity Framework qui gère vos besoins transactionnels.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X