我一直在考虑在F#中实施电子支付系统.一个关键要求是事务管理.
我使用了TransactionScope和Dapper,效果很好.我可以使用Tranq来管理数据库事务,但是想使用像TransactionScope这样的东西来管理在线操作.
相对较新的F#,我不知道是否有相当于的东西
using (var trans = new TransactionScope())
{
...//operations
trans.Complete();
}
Run Code Online (Sandbox Code Playgroud)
如果从C#到F#方法的线到线转换是错误的,那么是否还有管理交易的"功能方式"?
F#与usingC#有类似的块.
using (new Thing()) (fun x -> x.DoStuff ... )
Run Code Online (Sandbox Code Playgroud)
但是useF#中还有一个绑定,它的作用就像let它Dispose在对象超出范围时调用一样.如果它没有被代码回滚,那么制作一个包装TransactionScope和调用的新类型并不太难Complete.
还可以使工作流构建器处理事务.
但是,您可能最好使用诸如Entity Framework之类的数据库层来处理您的事务需求.