Runtime: Solução alternativa para aplicativos dependentes de DTC em relação à portabilidade para NetCore 3.0

Criado em 5 dez. 2019  ·  3Comentários  ·  Fonte: dotnet/runtime

Tudo,

Se seu aplicativo netcore envolve várias conexões em um espaço de transações, você receberá um erro de tempo de execução:
"Esta plataforma não suporta transações distribuídas."

Estou me perguntando qual é a melhor solução alternativa para aplicativos da web que estão sendo portados para netcore3, que usava DTC. É refatorar para usar o padrão UnitOfWork?

Não quero gerenciar conexões na minha camada de negócios, que foi a ajuda da TransactionScope.

Obrigado!

Relacionado:
Problema em aberto: https://github.com/dotnet/corefx/issues/13532
Stack Overflow: https://stackoverflow.com/questions/56328832/transactionscope-throwing-exception-this-platform-does-not-support-distributed-t

area-System.Transactions untriaged

Comentários muito úteis

Também queremos portar do .NET Framework para o .NET Core e descobrimos que o DTC não é compatível com o TransactionScope, o que parece um problema em termos de podermos portar para o .NET Core.

Nossos casos de uso específicos são:

  1. Precisamos gravar em duas tabelas de banco de dados diferentes que residem em dois SQL Servers separados e garantir que tudo esteja comprometido com o banco de dados atomicamente, o que fazemos hoje com sucesso usando TransactionScope e DTC.
  2. Precisamos INSERT / UPDATE / DELETE várias tabelas de banco de dados em uma única transação de nosso código de camada de negócios que não tem conhecimento do banco de dados. Hoje conseguimos isso com a criação de um TransactionScope em nossa camada de negócios que, por sua vez, faz várias chamadas para nossa camada de acesso a dados, que realiza as operações de banco de dados necessárias.

Como as transações distribuídas não são atualmente suportadas no .NET Core, qual é a recomendação da Microsoft como solução alternativa?

Todos 3 comentários

Também queremos portar do .NET Framework para o .NET Core e descobrimos que o DTC não é compatível com o TransactionScope, o que parece um problema em termos de podermos portar para o .NET Core.

Nossos casos de uso específicos são:

  1. Precisamos gravar em duas tabelas de banco de dados diferentes que residem em dois SQL Servers separados e garantir que tudo esteja comprometido com o banco de dados atomicamente, o que fazemos hoje com sucesso usando TransactionScope e DTC.
  2. Precisamos INSERT / UPDATE / DELETE várias tabelas de banco de dados em uma única transação de nosso código de camada de negócios que não tem conhecimento do banco de dados. Hoje conseguimos isso com a criação de um TransactionScope em nossa camada de negócios que, por sua vez, faz várias chamadas para nossa camada de acesso a dados, que realiza as operações de banco de dados necessárias.

Como as transações distribuídas não são atualmente suportadas no .NET Core, qual é a recomendação da Microsoft como solução alternativa?

Estamos investigando a viabilidade de trazer esse recurso para o Core, continue a rastrear dotnet / corefx # 13532, esse problema será movido para este repositório em breve.

Problema movido para dotnet / runtime # 715

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

bencz picture bencz  ·  3Comentários

btecu picture btecu  ·  3Comentários

jkotas picture jkotas  ·  3Comentários

omajid picture omajid  ·  3Comentários

GitAntoinee picture GitAntoinee  ·  3Comentários