F#事务管理

Wei*_* Ma 1 f# c#-to-f#

我一直在考虑在F#中实施电子支付系统.一个关键要求是事务管理.

我使用了TransactionScope和Dapper,效果很好.我可以使用Tranq来管理数据库事务,但是想使用像TransactionScope这样的东西来管理在线操作.

相对较新的F#,我不知道是否有相当于的东西

using (var trans = new TransactionScope())
{
    ...//operations
    trans.Complete();
}
Run Code Online (Sandbox Code Playgroud)

如果从C#到F#方法的线到线转换是错误的,那么是否还有管理交易的"功能方式"?

Dan*_*tch 7

F#与usingC#有类似的块.

using (new Thing()) (fun x -> x.DoStuff ... )
Run Code Online (Sandbox Code Playgroud)

但是useF#中还有一个绑定,它的作用就像letDispose在对象超出范围时调用一样.如果它没有被代码回滚,那么制作一个包装TransactionScope和调用的新类型并不太难Complete.

还可以使工作流构建器处理事务.

但是,您可能最好使用诸如Entity Framework之类的数据库层来处理您的事务需求.