2013-04-25 187 views
1

我一直在考慮在F#中實現電子支付系統。一個關鍵的要求是交易管理。F#交易管理

我用了Dapper的TransactionScope,它運行良好。我可以使用Tranq來管理數據庫事務,但想使用類似TransactionScope的東西來管理在線操作。

相對較新的F#,我不知道是否有什麼如果線到線,從C#到F#方法翻譯,等效於

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

是錯誤的,那麼有沒有更管理交易的「功能方式」?

回答

7

F#與C#有一個類似的using塊。

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

But there is also a use binding in F#,它的工作原理類似,只是它let調用Dispose當對象超出範圍。這不是太難做一個新類型,包裝TransactionScope當它,如果它沒有被回滾Code的配置要求Complete ...

這也將有可能使一個workflow builder打理事務。

但是,使用數據庫層(如處理事務需求的實體框架)可能會更好。