powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / select-ы внутри одной транзакции
8 сообщений из 8, страница 1 из 1
select-ы внутри одной транзакции
    #34041309
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет. Делаю динамическую подгрузку данных в dataGridView как описано в msdn-е. Там данные подгружаются динамически, по мере скролла dataGridView. Мне необходимо сделать так, чтобы при открытии формы с этим dataGridView началась выполняться транзакция, т.е. данны ебы уже подгружались не из "чистой таблицы", а из какого-то кэша, т.е. если кто-то другой изменить данные во время моей работы с этой формой, у меня это никак не отображалось. Не могу ничего найти по поводу выборок внутри одной транзакции. Помогите кто знает. Спасибо.
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34041578
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного не правильно сформулировал вопрос. Мне нужно читать из таблицы внутри одной транзакции. Пишу на C# под Oracle, пока не получается найти примеры реализации такой штуки.
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34041664
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, не очень понятна формулировка вопроса. Что касается Oracle, то
1. если нужно читать какое-то время состояние данных на определенный момент времени (возможно, из разных таблиц), можно поставить оператор
Код: plaintext
1.
SET TRANSACTION READ ONLY

2. если нужно, чтобы никто не мог ИЗМЕНИТЬ данные некоторое время, можно использовать
Код: plaintext
1.
2.
SELECT...
FOR UPDATE [NOWAIT]

Если случай 1 и удерживать надо значительное время, необходимо позаботиться о достаточном размере UNDO
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34041690
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно читать данные из базы внутри одной транзакции, т.е. если кто-то изменил записи в базе, то эти изменения меня бы не коснулись, а считались старые значения, т.е. значения, которые были на момент, когда я начал с ними работать.
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34041697
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, наверно, 1-ый случай для меня. Спасибо.
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34043145
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос, как реализовать это в ADO.NET остается открытым :)
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34043482
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажем есть вот такой код

OracleConnection con1 = new OracleConnection(conStr) ;
con1.Open();
OracleCommand cmd = new OracleCommand(
"SET TRANSACTION READ ONLY", con1);
cmd.ExecuteNonQuery();
cmd.CommandText = "select count(*) from table1";
MessageBox.Show(cmd.ExecuteScalar().ToString());

//Вот здесь, пока висит MessageBox, например, удаляем строки из
//таблицы table1

cmd.CommandText = "select count(*) from table1";
MessageBox.Show(cmd.ExecuteScalar().ToString());
//Этот MessageBox показывает кол-во строк уменьшенное на число удаленных строк, т.е. данные читаются не из SnapShot-а.

cmd.CommandText = "COMMIT";
cmd.ExecuteNonQuery();
con1.Close();

Подскажите, в чем я не прав?
Спасибо.
...
Рейтинг: 0 / 0
select-ы внутри одной транзакции
    #34044692
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам с ADO не работал, но могу высказать след. соображения:

1. в самом Oracle (например, в SQL*Plus) это работает без проблем
2. можно, в крайнем случае, извратиться, создать временную таблицу (CREATE GLOBAL TEMPORARY TABLE), записывать выборку в нее, а затем считывать оттуда (это в случае, если ADO не создает каких-нибудь доп. сессий)
3. уже неоднократно говорилось, особенно на форуме Delphi, что ADO не поддерживает некоторые фичи Oracle и с ним лучше работать через другие вещи, например ODAC (сам пользовал)

PS все это исходит из предположения, что в приведенном примере вот это

//Вот здесь, пока висит MessageBox, например, удаляем строки из
//таблицы table1

делалось в другой сессии...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / select-ы внутри одной транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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