【发布时间】:2016-07-01 18:51:49
【问题描述】:
我习惯于使用 C# 进行编码,有时我会创建对不同存储库进行多次调用的事务,如果调用失败,则回滚会覆盖每个存储库。
代码是这样的:
using (var scope = new TransactionScope())
{
itemRepository.deleteItems(items);
bookRepository.deleteBooks(books);
scope.Complete();
}
这样可以确保如果 bookRepository 发生错误,已删除的项目将处于回滚状态。
现在,我正在尝试使用 node.js 做同样的事情。 我发现mssql 包可以选择创建事务,但只能在存储库中,如下所示:
var transaction = new sql.Transaction(/* [connection] */);
transaction.begin(function(err) {
// ... error checks
var request = new sql.Request(transaction);
request.query('insert into mytable (mycolumn) values (12345)', function(err, recordset) {
// ... error checks
transaction.commit(function(err, recordset) {
// ... error checks
console.log("Transaction committed.");
});
});
});
那么,有什么方法可以像我描述的那样在服务上创建一个涵盖多个存储库的事务?
【问题讨论】:
-
我正在为 mysql + node 寻找类似的答案
标签: sql-server node.js transactions transactionscope