当程序尝试访问水果数据库时,我遇到了挂起。我已经在我的开发计算机和 SQL Server 服务器上启用了网络访问 MSDTC。
代码:(请原谅代码着色......所以误解了我的 VB .NET)
Using ts As New TransactionScope
Dim fruit As New FruitDataContext
Dim thingies As New ThingiesDataContext
If (From f In fruit.tblApples Where f.Rotten = "Yes" AndAlso f.batch = 1).Count >= 1 Then
'Record today's date as the day that the rotten apples were dumped.
End If
'Other complicated code that uses ThingiesDataContext and FruitDataContext
du.SubmitChanges()
ts.Complete()
End Using
编辑:
我又挖了一点,结果发现问题出在 LINQ 行。当我尝试使用 LINQ to SQL Visualizer 查看它时,我收到以下错误:
System.InvalidCastException: Specified cast is not valid.
at LinqToSqlQueryVisualizer.SqlQueryInfo.deserialize(Stream stream)
at LinqToSqlQueryVisualizer.Visualizer.Display(IDialogVisualizerService windowService, Stream rawStream)
at LinqToSqlQueryVisualizer.DialogChooser.Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.DelegatedHost.CreateViewer(IntPtr hwnd, HostServicesHelper hsh, SafeProxyWrapper proxy)
我还编辑了 LINQ 语句以更接近我的真实代码。
最终编辑:我尝试使用普通的 SqlConnection 而不是“thingies as New ThingiesDataContext”,但问题仍然存在。
TransactionScope 似乎无法处理同一事务中的多个 SQL 连接。
微软官方笔记
SQL Server 不支持并行事务。
来自 MSDN:http: //msdn.microsoft.com/en-us/library/bb896149.aspx