我有 2 个 linq 2 SQL 语句我想在一个事务中(SQL 服务器是远程的,在防火墙之外等)所有其他通信工作但是当我将这 2 个语句包装在 TransactionScope() 中时,我开始不得不配置 MSDTC我们做到了,但是有防火墙问题(我认为)有没有更简单的方法?
我想做的基础知识归结为:(两者都是存储在引擎盖下的过程)
using (var transactionScope = new TransactionScope())
{
Repository.DataContext.SubmitChanges();
Repository.DataContext.spDoFinalStuff(tempID, ref finalId);
transactionScope.Complete();
}
实现这一目标的最简单方法是什么?
编辑:
首先我得到了这个:事务管理器已禁用对远程/网络事务的支持。(来自 HRESULT 的异常:0x8004D024)在我们的服务器上,我按照此处的说明进行了更正。但是,这些说明似乎不适用于 Windows 7(我的开发箱),请参阅我对上述答案的评论。
更正问题后(在非 win7 框中)我得到这个:事务已经隐式或显式提交或中止(HRESULT 异常:0x8004D00E),一些谷歌搜索建议可能是防火墙问题。
编辑
我刚刚发现远程数据库是 SQL 2000