我正在使用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部分单独处理,但没有任何效果。我的要求是将所有陈述置于单一交易之下。那可能吗?怎么样?