网上有很多人在谈论它,但这似乎不起作用。这是我得到的异常(exception):

 This SqlTransaction has completed; it is no longer usable.

这是代码
 using (SqlConnection locationConnection = new SqlConnection(connectionString))
        {
            locationConnection.Open();
            SqlTransaction transaction = locationConnection.BeginTransaction();
            SqlCommand cmd = new SqlCommand("
 Select stuff from table A
 Insert stuff into table B
 Delete stuff from table A", locationConnection, transaction);

            using(SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            //Doesn't matter
                        }
                    }

            //Exception happens here
            transaction.Commit();
        }

任何人都可以阐明为什么会发生这种情况吗?如果我将提交移动到 SqlDataReader 的范围内,我会收到 datareader 需要先关闭的异常。

编辑:我已经回答了我的问题,并会尽量记住在我被允许的几天后接受它。

最佳答案

问题是我的 DELETE 语句出现了 SqlException(外键问题)。这是关闭 sqlconnection 并结束事务,但它没有在我的代码中抛出异常,因为 SELECT 语句工作正常。我已经解决了 Sql 问题并且代码工作正常。如果其他人遇到这种情况,他们应该能够像我一样做到这一点。

关于c# - 将 SqlTransaction 与 SqlDataReader 一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30896240/

10-09 15:19