WCF事务范围SQL插入表锁

时间:2010-04-29 21:34:18

标签: wcf transactionscope

我有两个服务与两个不同的数据存储(即SQL)通信。我正在使用transactionscope: 例如:

using(TransactionScope scope = new TransactionScope())
{
    service1.InsertUser(user);//Insert to SQL Service 1 table User
    service2.SavePayment(payment);//Save payment SQL Service 2 table payment
    scope.Complete();
}

Service1正在锁定表(User),直到事务完成,从而使该表的后续事务顺序完成。有没有办法克服锁定,因此在执行上述代码时可以对SQL service1表进行多次并发调用?

我很感激任何意见。

先谢谢。

Lihnid

1 个答案:

答案 0 :(得分:0)

我猜你的用户或付款表上可能有更新另一个的触发器。

最可能的情况是你的保存调用可能会做一些选择,你在插入的同一个proc中无法做到。这导致过多的锁定。确定是否需要插入单独的数据库调用,使用内部新的transactionscope和suppress选项,从事务中删除select。我知道你的选择会有nolock,但在sql 2005和旧版本中它似乎被忽略了。我遇到了同样的问题。

尽可能简化所有通话。

相关问题