当我有.NET TransactionScope时,如何从COM读取表格?

时间:2017-10-04 14:20:24

标签: c# .net sql-server com vb6

我有这样的情况:

[TestMethod]
public void net_call_com_in_transaction()
{
    TransactionOptions tranOptions = new TransactionOptions();
    tranOptions.IsolationLevel = IsolationLevel.ReadUncommitted;
    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transOptions))
    {
        // ...someCode that Update Table1 with SqlCommand instructions
        COMWrapper wrapper = GetComWrapper();
        wrapper.Publish();
        // otherCode....
        scope.Commit();
    }
}

我使用TransactionScopeOption'Required'打开一个事务,并在其中通过SqlCommand更新 Table1
随后,正如您在上面的代码中看到的,我在Interop中调用一个COM对象( wrapper.Publish() - 总是在事务中)它读取了一个 Table1 (内部方法Publish())。

问题是从COM读取 Table1 待决,因为我有.NET事务锁定 Table1 。此时你会说:“你应该阅读COM中的Table1 with WITH WITH(NOLOCK)”但是由于其他原因我不能这样做。

那么,还有另一个解决方案允许我在没有待处理状态的COM中读取 Table1 吗?

0 个答案:

没有答案