powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Трудности Commit после выполнения не возвращающего данных запроса
5 сообщений из 5, страница 1 из 1
Трудности Commit после выполнения не возвращающего данных запроса
    #38439548
Здравствуйте!

Проект на С# .Net 4.0; используется FireBird .Net provider 3.2; сервер Firebird 2.5.2
После выполнения <FBCommand>.ExecuteNonQuery() следующая команда <FBCommand>.Transaction.Commit() вызывает исключение NullReferenceException. В отладчике перед выполнением ExecutNonQuery свойство Transaction указывает на конкретный объект, заданный при создании экземпляра FBCommand. Сразу после выполнения это свойство равно null. Не могу понять почему, и как лечить. Подскажите пожалуйста как это лечиться?

Спасибо
...
Рейтинг: 0 / 0
Трудности Commit после выполнения не возвращающего данных запроса
    #38439621
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий Соболев,

автокоммит может срабатывает в ExecuteNonQuery()? соответственно транзакция и завершается неожидано для следующего оператора
...
Рейтинг: 0 / 0
Трудности Commit после выполнения не возвращающего данных запроса
    #38439674
arni,

Вполне возможно, но почему объект Transaction обNULLяется? и почему в пределах одной функции один запрос отрабатывает как задумано, с явным Commit, а следующий уже капризничает?

В исходниках .Net provider, взятом с офсайта, в функции ExecuteNonQuery есть вызов CommitImplicitTransaction. Он и есть автокомит?
...
Рейтинг: 0 / 0
Трудности Commit после выполнения не возвращающего данных запроса
    #38439700
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий Соболевно почему объект Transaction обNULLяется?
Это наверняка знает Иржи. Спроси у него:
news://news.gmane.org:119/gmane.comp.db.firebird.dotnetprovider
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Трудности Commit после выполнения не возвращающего данных запроса
    #38440631
Вот что нарыл в исходниках клиента. Значит он сам обNULLяет transaction. Так задумано.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
internal void CommitImplicitTransaction()
{
 if (this.HasImplicitTransaction &&
 this.transaction != null &&
 this.transaction.Transaction != null)
 {
  try
  {
   this.transaction.Commit(); 
  }
  catch
  {
   this.RollbackImplicitTransaction();
   throw;
  }
  finally
  {
   if (this.transaction != null)
   {
    this.transaction.Dispose();
    this.transaction = null;
    this.implicitTransaction = false;
   }

   if (this.statement != null)
   {
    this.statement.Transaction = null;
   }
  }
 }
}



Спасибо всем...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Трудности Commit после выполнения не возвращающего данных запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]