2

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

我将TransactionScope与 Dapper 一起使用,效果很好。我可以使用Tranq来管理数据库事务,但想使用 TransactionScope 之类的东西来管理在线操作。

F#比较新,不知道有没有相当于

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

如果从 C# 到 F# 的逐行转换方法是错误的,那么还有更多“功能性方式”来管理事务吗?

4

1 回答 1

8

F# 具有与usingC# 类似的块。

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

但在 F# 中也有一个use绑定,它的工作方式与对象超出范围时let调用的方式相同。如果它没有被代码回滚,那么创建一个新类型在它被释放时包装和调用Dispose并不难......TransactionScopeComplete

也可以让工作流构建器处理事务。

但是,您最好使用数据库层(例如 Entity Framework)来处理您的事务需求。

于 2013-04-25T17:56:59.940 回答