【发布时间】:2010-08-20 05:03:49
【问题描述】:
我有 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)
在我们的服务器上,我按照here 的说明进行了更正。但是,这些说明似乎不适用于 Windows 7(我的开发箱),请参阅我对上述答案的评论。
在更正问题后(在非 win7 框中)我得到这个:事务已经被隐式或显式提交或中止(HRESULT 异常:0x8004D00E)其中一些谷歌搜索 suggested 可能是防火墙问题。
编辑
我刚刚发现远程数据库是 SQL 2000
【问题讨论】:
标签: linq-to-sql transactions msdtc