powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Несколько вопросов по ADO.NET
7 сообщений из 7, страница 1 из 1
Несколько вопросов по ADO.NET
    #32939795
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. До этого я программировал клиентов на Delphi, а сейчас приходиться разбираться с ADO.NET, в частности с датасетом и датаадаптером, и мне многие его концепции непонятны:

1) Не могу найти аналога дельфийскому DataSet.Refresh (и RefreshSQL соттветственно). Т.е. мне надо перечитать одну конкретную запись из таблицы в объект DataTable. Как мне это сделать?

2) Как осуществляется вставка записей мне непонятно. Например у меня есть таблица с миллионом записей. Я один раз заполнил DataSet и вставил на клиенте 5 записей в эту таблицу. В это же время ещё несколько граждан вставили тоже по несколько записей и теперь мы свои изменения пытаемся влить в базу. Мне не понятно как адо разруливает создание уникальных ключей. Если АДО генерирует их сам, то как он обеспечивает уиникальность ключей у меня и у соседей. Если же ключи создаються на сервере, то как мне после вставки изменений узнать значения вставленных ключей ?

3) Возможно ли чтобы DataSet заполнялся по мере необходимости? В дельфи считывалось столько записей, сколько нужно для отображения в связанных с датасетом контролах. Если контролос нет, то при вызове DataSet.Open из базы считывается только одна запись. Таким образом если у меня есть таблица с 100 миллионами записей и она отображается в DBGrid, то по умолчанию на клиента будут грузиться не все 100 миллионов, а столько, сколько требует грид. Как это работает в адо?
...
Рейтинг: 0 / 0
Несколько вопросов по ADO.NET
    #32939813
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторне могу найти аналога ...

1. не ищи аналогов там, где их нет :)

2. полностью забудь опыт программирования с обычным ADO вообще и в Delphi в частности.

для начала посмотри:

ADO.NET for the ADO Programmer
...
Рейтинг: 0 / 0
Несколько вопросов по ADO.NET
    #32940980
JeSert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold
посмотри форум по 3 вопросу описывались по "листные запросы" - типа того не помню.
и что тебе сдесь помешало считывать нужную информацию в DataSet?
это дело простых запросов(для начала)
...
Рейтинг: 0 / 0
Несколько вопросов по ADO.NET
    #32941053
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стр...2. полностью забудь опыт программирования с обычным ADO вообще и в Delphi в частности...

Ну не полностью, но в целом поддерживаю.

Касательно первого вопроса. Можно считать одну строку в отдельный датасет и затем сделать им Merge. Это будет похоже на Resync по эффекту :).

Касательно второго вопроса - мне понравился один прикольный способ для master-detail датасетов, но и для однотабличных сойдет. В ключевой колонке назначается автоинкремент 0 и идет в минус. А при сохранении у адаптера вызывается команда на сохранение, которая может сделать селект сохраняемой строки после ее обновления (или вставки) уже со всеми ключами и т.п. Эта команда настраивается тобой-же, т.е. можно и хп замутить.
...
Рейтинг: 0 / 0
Несколько вопросов по ADO.NET
    #32941259
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold
сейчас приходиться разбираться с ADO.NET, в частности с датасетом и датаадаптером, и мне многие его концепции непонятны

читайте литературу, постепенно сориентируетесь.

Gold
1) Не могу найти аналога дельфийскому DataSet.Refresh (и RefreshSQL соттветственно). Т.е. мне надо перечитать одну конкретную запись из таблицы в объект DataTable. Как мне это сделать?

Одно из главных преимуществ DataSet состоит в том, что он не зависит от источника данных. Т.е. нет обратной связи DataSet <-> Database , и нигде в DataSet вы не найдете сведений откуда были получены данные, либо из БД, либо из XML, либо сгенерированы вручную, таким образом не может быть и речи о существовании метода Refresh в классе DataSet .

Функциональность по обновлению данных реализуется разными способами вручную, варианты реализации можно посмотреть здесь на форуме и на форуме C#.

Gold
2) Как осуществляется вставка записей мне непонятно. Например у меня есть таблица с миллионом записей. Я один раз заполнил DataSet и вставил на клиенте 5 записей в эту таблицу. В это же время ещё несколько граждан вставили тоже по несколько записей и теперь мы свои изменения пытаемся влить в базу. Мне не понятно как адо разруливает создание уникальных ключей. Если АДО генерирует их сам, то как он обеспечивает уиникальность ключей у меня и у соседей. Если же ключи создаються на сервере, то как мне после вставки изменений узнать значения вставленных ключей ?

Как вы запрограммируете так и будет эта ситуация разруливаться :-) ADO.NET здесь не принимает решений, в случае чего просто поймаете исключение.
Артем1
мне понравился один прикольный способ для master-detail датасетов, но и для однотабличных сойдет. В ключевой колонке назначается автоинкремент 0 и идет в минус.

Это рекомендуемая практика, когда, отсоединено от источника данных, идет генерация псевдоключей, а при вставке данных значения псевдоключей подменяются реальными данными, (автоинкремент может быть любым, в минус - обеспечивается "согласованность" с уже имеющимися ID)

Gold
3) Возможно ли чтобы DataSet заполнялся по мере необходимости? В дельфи считывалось столько записей, сколько нужно для отображения в связанных с датасетом контролах. Если контролос нет, то при вызове DataSet.Open из базы считывается только одна запись. Таким образом если у меня есть таблица с 100 миллионами записей и она отображается в DBGrid, то по умолчанию на клиента будут грузиться не все 100 миллионов, а столько, сколько требует грид. Как это работает в адо?

Мое ИМХО, если 100 млн. записей в гриде - это ошибка проектирования, рядовой пользователь не сможет переварить столько. Если же и вызовется "доброволец", то реализуйте ему порционную загрузку данных.
P.S. у вас везде слово ADO , а я говорю про ADO.NET , так как форум у нас так называется ADO.NET :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Несколько вопросов по ADO.NET
    #32949655
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за ответы. По ходу дела оказалось что у нас люди DataSet вобще не используют. Считывают данные датаридером в свои классы и работают со своими классами. Тоже интересный способ, только вот привязку этик классов к контролам делать дольше.
...
Рейтинг: 0 / 0
Несколько вопросов по ADO.NET
    #32961179
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataSet - мечта удава. БД в памяти. Которую можно передать между приложениями.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Несколько вопросов по ADO.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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