Установить изоляцию без операции ifxtransaction? - PullRequest
1 голос
/ 28 января 2010

Я пытаюсь выполнить простой запрос выбора, используя IfxCommand. Я хотел бы установить изоляцию для грязного чтения, но я нашел только примеры установки уровня изоляции в контексте IfxTransaction. Мне не требуется транзакция, так как я выдаю только оператор выбора. Ниже мой текущий код, это лучший подход? Кроме того, если вы знаете, как долго уровень изоляции остается грязным, я хотел бы знать.

DataSet ds = new DataSet();
        IfxConnection connection = new IfxConnection(ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString);
        IfxCommand command = new IfxCommand();

        try
        {
            connection.Open();                
            command.Connection = connection;
            command.CommandText = "SET ISOLATION TO DIRTY READ";
            command.ExecuteNonQuery();

            command.CommandText = BuildCommandString();

            IfxDataAdapter idap = new IfxDataAdapter(command.CommandText, connection);
            idap.Fill(ds);
        }

1 Ответ

0 голосов
/ 28 января 2010

Будет

using (var noTransaction = new TransactionScope(TransactionScopeOption.Suppress)) {
  // Use your connection here
}

работа? Не уверен, что Informix зачисляется в окружающие транзакции? Или - если вы хотите явно установить уровень изоляции во вложенной транзакции:

var txOptions = new TransactionOptions();
txOptions.IsolationLevel = IsolationLevel.ReadUncommitted;
txOptions.Timeout.TotalSeconds * 2));
using (var noTransaction = new TransactionScope(TransactionScopeOption.RequiresNew, txOptions)) {
  // Use your connection here
}

Редактировать: просто прочитайте комментарий, который ссылается на Informix и TransactionScopes. Вам придется изменить код, чтобы отразить решение там.

...