但事务已中止错误

时间:2017-03-10 11:01:19

标签: c# transactions entity-framework-6 transactionscope distributed-transactions

我正在使用EF6代码第一种方法。我有一个案例,我试图在2个不同的数据库上应用相同的事务。在下面找到我的代码作为参考,

using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew, TimeSpan.FromSeconds(6000)))
        {
            using (var dbContext = new MyDbContext())
            {
                try
                {
                    /*
                     * some operations on dbContext
                     * 
                     */

                    using (IDbConnection conn = new SqlConnection(NewConnectionString))
                    {
                        string query = " ALTER TABLE [dbo].[TableName]...........";
                        conn.Execute(query); // I am using a dapper to call this execute query
                    }
                }
                catch (Exception ex)
                {                        
                    throw;
                }
            }

            scope.Complete();
        }

try块中的第一部分使用linq对表执行一些正常操作。 我使用IDbConnection的第二部分,我在另一个数据库上使用dapper执行一些查询。我可以毫无错误地执行所有操作,但是在完成范围后我收到错误。它会抛出错误交易已中止。每当我跳过精巧的执行部分时,一切正常。我检查了很多解决方案,并试图为dapper部分单独处理,但没有任何效果。我的要求是将所有陈述置于单一交易之下。那可能吗?怎么样?

0 个答案:

没有答案