当使用LinqToSql添加行时,我会遇到InvalidOperationException
错误。我们在内部无法重现此问题,但只有一个客户的发生率约为0.06%,并且仅发生在对数据库进行相对简单的更改时(单行插入或单个字段更新)。
Message:
This SqlTransaction has completed; it is no longer usable.
Stack Trace:
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
这是一个示例代码(数据库自动生成主键):
TableName row = new TableName();
row.Description = "something";
row.Action = "action";
Context.TableName.InsertOnSubmit(row);
Context.SubmitChanges();
我们使用的是 SQL Server 2008 R2。在服务器上,插入和更新确实已经完成了。但我们仍然会收到异常信息。没有任何东西应该阻止这些更新和插入操作的进行。也没有依赖关系或其他东西。
我们如何停止这些异常、僵尸检查或回滚的发生,或者是什么导致它们首先发生的?
编辑:经过进一步检查,SubmitChanges() 所做的数据库更新实际上已经完成了。此异常在事务成功完成并且数据库行被更新到新值后被调用。
using
块内? - Tieson T.