1

我有两个 WCF 函数,都在使用:

using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Serializable })) 
{
    // Code here
}

如果我同时调用两个函数,一个函数会一直等到另一个函数完成吗?我需要这个来保证数据的一致性。

我使用 SQL Server 2008 和 Entity Framework 5.0。

4

1 回答 1

2

这取决于您在交易中所做的事情。

如果您只在事务中读取数据,则不会发生锁定冲突,并且事务不会相互等待。

如果一个事务正在读取而另一个事务正在写入相同范围的数据,则它们将不得不相互等待。这同样适用于它们都写入相同数据范围的情况。

可序列化事务隔离级别是最严格的隔离级别。您可以在 Microsoft TechNet 上查看更多信息:http ://technet.microsoft.com/en-us/library/ms173763.aspx

说了这么多,您仍然可以使用锁定提示控制每个单独语句级别的锁定。您可以在此处阅读更多信息:http ://technet.microsoft.com/en-us/library/ms189857(v=sql.105).aspx

于 2013-10-07T09:40:07.777 回答