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

У меня были проблемы с разрешениями Unix, я использовал одно и то же git-репо с двумя разными пользователями (один был root, другой был моим частным пользователем).

Итак, мне пришлось изменить владельца файла на .git/ORIG_HEAD на моего личного пользователя, который решил проблему.

chown myuser:mygrp .git/ORIG_HEAD
16
задан Nathan Ridley 1 June 2009 в 10:46
поделиться

3 ответа

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

connection.EnlistTransaction(Transaction.Current)

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

HTH

30
ответ дан 30 November 2019 в 16:42
поделиться

Чтобы подключить соединение к 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;

    ...
    ...

}
5
ответ дан 30 November 2019 в 16:42
поделиться

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

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

2
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: