Runtime: Обходной путь для приложений, зависящих от DTC, при переносе на NetCore 3.0

Созданный на 5 дек. 2019  ·  3Комментарии  ·  Источник: dotnet/runtime

Все,

Если ваше приложение netcore объединяет несколько подключений в область транзакций, вы получите ошибку времени выполнения:
«Эта платформа не поддерживает распределенные транзакции».

Мне интересно, как лучше всего решить проблему с веб-приложениями, которые переносятся на netcore3, в котором используется DTC. Нужно ли провести рефакторинг для использования шаблона UnitOfWork?

Я не хочу управлять подключениями на своем бизнес-уровне, с чем и помог TransactionScope.

Спасибо!

Связанный:
Открытый выпуск: https://github.com/dotnet/corefx/issues/13532
Переполнение стека: https://stackoverflow.com/questions/56328832/transactionscope-throwing-exception-this-platform-does-not-support-distributed-t

area-System.Transactions untriaged

Самый полезный комментарий

Мы также хотим выполнить перенос с .NET Framework на .NET Core и столкнулись с тем, что DTC не поддерживается с помощью TransactionScope, что кажется нарушителем сделки с точки зрения возможности переноса на .NET Core.

Наши конкретные варианты использования:

  1. Нам нужно записать данные в две разные таблицы базы данных, расположенные на двух отдельных серверах SQL, и убедиться, что все данные передаются в базу данных атомарно, что мы сегодня успешно делаем с помощью TransactionScope и DTC.
  2. Нам нужно ВСТАВИТЬ / ОБНОВИТЬ / УДАЛИТЬ несколько таблиц базы данных в одной транзакции из нашего кода бизнес-уровня, который ничего не знает о базе данных. Сегодня мы успешно достигаем этого, создав TransactionScope на нашем бизнес-уровне, который, в свою очередь, выполняет несколько вызовов нашего уровня доступа к данным, который выполняет необходимые операции с базой данных.

Поскольку распределенные транзакции в настоящее время не поддерживаются в .NET Core, какова рекомендация Microsoft в качестве временного решения?

Все 3 Комментарий

Мы также хотим выполнить перенос с .NET Framework на .NET Core и столкнулись с тем, что DTC не поддерживается с помощью TransactionScope, что кажется нарушителем сделки с точки зрения возможности переноса на .NET Core.

Наши конкретные варианты использования:

  1. Нам нужно записать данные в две разные таблицы базы данных, расположенные на двух отдельных серверах SQL, и убедиться, что все данные передаются в базу данных атомарно, что мы сегодня успешно делаем с помощью TransactionScope и DTC.
  2. Нам нужно ВСТАВИТЬ / ОБНОВИТЬ / УДАЛИТЬ несколько таблиц базы данных в одной транзакции из нашего кода бизнес-уровня, который ничего не знает о базе данных. Сегодня мы успешно достигаем этого, создав TransactionScope на нашем бизнес-уровне, который, в свою очередь, выполняет несколько вызовов нашего уровня доступа к данным, который выполняет необходимые операции с базой данных.

Поскольку распределенные транзакции в настоящее время не поддерживаются в .NET Core, какова рекомендация Microsoft в качестве временного решения?

Мы изучаем возможность переноса этой функции в Core, продолжайте отслеживать dotnet / corefx # 13532, в ближайшее время эта проблема будет перенесена в это репо.

Проблема перенесена в dotnet / runtime # 715

Была ли эта страница полезной?
0 / 5 - 0 рейтинги