Nano Hash - криптовалюты, майнинг, программирование

Есть ли способ использовать TransactionScope с существующим подключением?

У меня есть код, который работает как рекомендованное использование TransactionScope, но имеет внешнее соединение вместо внешней транзакции.

Есть ли способ использовать объект TransactionScope с существующим подключением или есть альтернатива в платформе .Net для этой цели?


Ответы:


1

На самом деле выход один.

connection.EnlistTransaction(Transaction.Current)

Он работает и не продвигает транзакцию к распределенной, если в ней нет необходимости (вопреки тому, что говорится в документации)

HTH

01.07.2010
  • что такое connection? 05.02.2020
  • Любой класс, производный от DbConnection 05.02.2020

  • 2

    Чтобы подключить соединение к TransactionScope, вам необходимо указать 'Enlist=true' в его строке подключения и открыть соединение в области этого объекта TransactionScope.

    Вы можете использовать SqlConnection.BeginTransaction в существующем соединении.

    Обновление. Можете ли вы использовать BeginTransaction вот так:

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
    
        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;
    
        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");
    
        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;
    
        ...
        ...
    
    }
    
    01.06.2009
  • Дело в том, что соединение открывается до создания экземпляра TransactionScope; отсюда и причина моего вопроса. 01.06.2009
  • @Mitch, разве connection.BeginTransaction (SampleTransaction) не продвигается в распределенную транзакцию (DTC) в любом сценарии? Если да, то каковы эти сценарии? 28.07.2011

  • 3

    После дополнительных исследований ответ на мой вопрос оказался:

    Нет, соединение необходимо открыть после создания объекта TransactionScope.

    10.06.2009
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..