避免在连接到同一SQL Server .net Core上的多个DB时进行分布式事务

时间:2019-11-20 16:20:37

标签: .net-core transactionscope distributed-transactions

我们正在将一个项目从.NET Framework迁移到.NET Core,该项目正在使用同一SQL服务器上的多个数据库。过去,我们将事务范围用于任何我们希望在发生错误时回滚的事务。

当事务涉及多个DB时,该事务将被提升为.NET Core不支持的分布式事务。

问题是,如果所有数据库实际上都在同一台服务器上,那么如果我要使用“跨数据库查询”,就像在此{{3}}的最后一部分中所建议的那样,我是否可以避免这种情况的发生? ?

“跨数据库查询”只是意味着运行原始SQL命令,例如:

using(TransactionScope scope = new TransactionScope())
{
    var connection = new SqlConnection(connectionString);
    connection.Open();

    var SqlComm1 = new SqlCommand("Insert into TableA...", connection);
    SqlComm1 .ExecuteNonQuery();

    var SqlComm2 = new SqlCommand("Insert into [DB2].[dbo].[TableB]...";
    SqlComm2 .ExecuteNonQuery();
    .
    .
}

如果没有,我可以得到一个实际上是什么的代码示例吗?

最后,在使用“跨数据库查询”时,我可以利用我实际的DBContexts中的任何东西吗?像连接,dbSet或其他任何东西,如果可以,怎么办?

0 个答案:

没有答案