Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
В поиске
104 / 52 / 17
Регистрация: 20.04.2014
Сообщений: 826

Как обновляют базы данных при ADO.NET?

08.12.2022, 18:54. Показов 1069. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда допустим была программа версии 1 после обновления её до версии 2 где в базе были изменения(столбцы, таблицы добавлены и удалены)
Что нужно делать? прочитывать в базе каждый столбец таблице и потом запросами
SQL
1
ALTER TABLE
удалять, изменять или добавлять? Или же есть что то на подобие
SQL
1
CREATE TABLE IF NOT EXISTS
Users если что то не совпадает, то заменит само под новый запрос.

Просто даже не знаю как грамотнее сформулировать вопрос чтобы в гугле задать так обновление базы звучит как обновление ПО, а не как советы по обновлению внутренних таблиц-столбцов.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2022, 18:54
Ответы с готовыми решениями:

C#, ADO.NET. Как защитить файл базы данных Access от удаления пользователем через проводник?
VS 2010, framework 4. Добавляю в проект ссылку "Microsoft ADO Ext. 2.8 for DDL and Security". При создании файла базы данных Access...

ADO.NET и базы данных
у меня маленькая проблемка есть база данных и c# visual studio 2005 база данных содержит поле пита деньги нужно осуществить выборку по...

Выбор базы данных для ADO.net
подскажите какие базы данных стоит использовать вместе с АДО?Всем известный access или родные mdf. С аргументацией пожалуйста?Меня...

13
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
08.12.2022, 19:41
миграции для этого существуют
0
В поиске
104 / 52 / 17
Регистрация: 20.04.2014
Сообщений: 826
08.12.2022, 19:44  [ТС]
Dr9vik, миграция в ADO.NET? и каким SQLм?
0
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
08.12.2022, 19:46
Цитата Сообщение от КВА696 Посмотреть сообщение
миграция в ADO.NET?
вот и настал момент когда надо Адо Нет сказать нет и подключить EF
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
08.12.2022, 19:58
Цитата Сообщение от КВА696 Посмотреть сообщение
Что нужно делать?
Нужно эти изменения отслеживать разными способами. Можно SQL-скрипты, можно в коде это делать. Тут от вас нужно больше подробностей как в базе изменения появились.

Цитата Сообщение от Dr9vik Посмотреть сообщение
вот и настал момент когда надо Адо Нет сказать нет и подключить EF
Внезапно, миграции можно делать очень удобно и быстро БЕЗ EF. EF - ORM в первую очередь. Для миграций есть куда более удобные вещи.
1
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
08.12.2022, 20:08
Цитата Сообщение от Usaga Посмотреть сообщение
Внезапно, миграции можно делать очень удобно и быстро БЕЗ EF. EF - ORM в первую очередь. Для миграций есть куда более удобные вещи.
конечно есть
только вопрос, зачем? если EF все умеет, и для начала хватит с головой
0
В поиске
104 / 52 / 17
Регистрация: 20.04.2014
Сообщений: 826
08.12.2022, 20:12  [ТС]
Usaga, Задачи ни какой нету. Просто интересно какие варианты применяют в основном.
Цитата Сообщение от Usaga Посмотреть сообщение
Тут от вас нужно больше подробностей как в базе изменения появились.
Кроме как простого примера что в новой базе нам дапустим нужно поле новое Name а поле Дата не нужно. ну и таблица пусь там добавится или удалится. И все это надо к примеру отдать другому человеку у которого версия 1 программы работает. и чтобы он не занимался экспортом импортом в ручную а просто запустил exe и радовался))

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Dr9vik Посмотреть сообщение
если EF все умеет, и для начала хватит с головой
Спору нет в каких то местах она удобная но личто для меня то что я делаю на ADO.NET за час на EF я это делаю с матом психами и как повезет))

0
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
08.12.2022, 20:16
Цитата Сообщение от КВА696 Посмотреть сообщение
на ADO.NET за час на EF я это делаю с матом психами и как повезет))
например?
0
В поиске
104 / 52 / 17
Регистрация: 20.04.2014
Сообщений: 826
08.12.2022, 20:28  [ТС]
Dr9vik, https://www.cyberforum.ru/ado-... 50548.html
На CORE перешел и вопрос частично был решел потом гемор в написании этих конфигов. EF тот что не core тот меня вообще с командами миграции просто выбесил постоянно какая то ошибка. В общем EF надо время и терпение и желание которых нету.
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
08.12.2022, 21:06
Лучший ответ Сообщение было отмечено КВА696 как решение

Решение

Цитата Сообщение от Dr9vik Посмотреть сообщение
например?
Многоуровневые запросы с оконными функциями, CTE, join на подзапросы внутри которых тоже join по группе критериев. Да любые реальные выборки, кроме CRUD и минимального JOIN, на голом SQL пишутся быстрее (и понятны куда более широкому кругу лиц), чем попытка получить что-то похожее на EF (в т.ч. и по эффективности плана получаемого запроса). Да даже в этой ветке я пару раз заводил темы, где пытались перевести подобные запросы на EF.

Ещё на EF не получится реализовать динамическое изменение набора колонок для проекции. Ну т.е. теоретически это возможно, если генерировать EF-контекст в рантайме, но это уже какое-то сверхшаманство.

А у EF-миграций есть один весомый (для некоторых сценариев) недостаток - они не умеют работать по реальной структуре БД, только по предполагаемой, указанной в метаданных.

Добавлено через 13 минут
Цитата Сообщение от КВА696 Посмотреть сообщение
Что нужно делать?
Вариант - в процессе разработки все нужные SQL-скрипты пишутся вручную и добавляются в план публикации. При публикации релиза, эти SQL выполняются либо вручную с контролем, либо скриптом публикации.

Вариант - пишется/покупается/ищется на гите утилита, которая умеет сравнивать структуру двух БД и строить SQL, устраняющий различия. Т.е. вы в своей девелоп-базе добавили поля/таблицы, поменяли индексы и т.п., потом запустили утилиту, она выдала список различий. Может автоматически применить. Может выгрузить информацию о структуре эталонной БД в JSON, чтобы потом на её основании построить дифф и обновить БД где-то у клиента (не имея доступа к вашей девелоп-базе).
2
В поиске
104 / 52 / 17
Регистрация: 20.04.2014
Сообщений: 826
08.12.2022, 21:19  [ТС]
kotelok, при втором варианте получается клиент должен последовательно обновления получать вначале версия 1 потом 2 потом 3 или при этом варианте умеет соображать при пропуске к примеру 2 версии?

Если я правильно понял liquibase о котором написал Usaga это второй вариант?

первый вариант тоже чем то похож на 2. А простым перебором разве не пользуются к примеру открыл базу проверил все ли таблици есть после открыл каждую таблицу и выдал имена столбцов и сравнил с полями классов и относительно них добавил или удалил столбец.

Добавлено через 4 минуты
я как то думал что у умного SQL есть запрос волшебный создать таблицу если она есть не создавать (он есть CREATE TABLE IF NOT EXISTS), а если та таблица что существует не соответствует запросу то как то самостоятельно удалить или добавить ненужные столбцы))))
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
08.12.2022, 21:21
Цитата Сообщение от КВА696 Посмотреть сообщение
при втором варианте получается клиент должен последовательно обновления получать вначале версия 1 потом 2 потом 3 или при этом варианте умеет соображать при пропуске к примеру 2 версии?
Нет, это при EF-миграциях клиент должен их последовательно применять. И при этом быть на 100% уверен, что структура/версия базы соответствует метаданным.

Второй вариант - это когда у вас есть целевая структура эталонной базы, и есть структура базы клиента в любом состоянии, в т.ч. в состоянии "ну я тут ручками залез и что-то поломал". Утилита строит диф для доведения базы клиента до эталона. С учётом всех нюансов, с учётом правильного порядка выполнения полученных SQL. Это и есть тот самый "простой перебор". Но на деле он не такой уж и простой оказывается, когда начинаешь это реализовывать. Куча нюансов. И тут вообще никакого понятия версий нет по сути, есть лишь эталон, к которому надо привести клиентскую базу, и какое-то непонятное текущее состояние клиентской базы.
1
В поиске
104 / 52 / 17
Регистрация: 20.04.2014
Сообщений: 826
08.12.2022, 21:26  [ТС]
kotelok, тобишь это вариант ТЕТ-А-ТЕТ когда с каждым клиентом придется работать индивидуально. А как работают когда клиентов много к примеру браузер опера, надо немного в базе что нить поправить. И у клиентов разные версии кто то подряд кто то через 1-2 обновляется. В таких случаях только первый вариант?
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
08.12.2022, 21:35
Лучший ответ Сообщение было отмечено КВА696 как решение

Решение

Не по теме:

Цитата Сообщение от Dr9vik Посмотреть сообщение
например?
https://www.cyberforum.ru/ado-... 37089.html
https://www.cyberforum.ru/ado-... 61373.html
https://www.cyberforum.ru/ado-... 93077.html

И вопрос даже не в том, что, наверное, большинство задач (так или наче) всё же можно изобразить в EF-синтаксисе, изрядно попотев. Вопрос в скорости разработки. С SQL-запросом, если он ну совсем заморочный, я могу в т.ч. сходить к аналитику, или к другому программисту, который EF даже не видел, и в итоге получить качественное решение. С EF так не получится, с EF ты каждый раз сидишь и пытаешься, пытаешься, потом переделываешь, т.к. план плохой получился и оно работает медленее исходного SQL. Добиваешься результата, потратив лишние пару часов, добавляешь пару индексов в БД, коммитишь ... а спустя месяц к тебе приходит другой разработчик и интересуется, что эта мега-конструкция вообще делает, т.к. он ещё не дорос до того уровня упоротости, что я постиг в процессе составления (да и я за месяц уже подзабыл все нюансы). И я даю ему исходный запрос, он его смотрит и все вопросы сразу отпадают.



Добавлено через 3 минуты
Цитата Сообщение от КВА696 Посмотреть сообщение
kotelok, тобишь это вариант ТЕТ-А-ТЕТ когда с каждым клиентом придется работать индивидуально. А как работают когда клиентов много к примеру браузер опера, надо немного в базе что нить поправить. И у клиентов разные версии кто то подряд кто то через 1-2 обновляется. В таких случаях только первый вариант?
Нет, это именно для массового распространения идеальный вариант, в отличие от EF-миграций.

1. Вы собираете релиз програмы. В этот момент утилита сканирует вашу БД, сохраняет информацию о её полной структуре в JSON. Этот JSON включается в дистрибутив/обновлятор (общий и одинаковый для всех 2000 клиентов).
2. Клиент запускает у себя дистрибутив/обвновлятор программы. В процессе обновления запускается та же самая утилита, которая сканирует БД клиента и выдаёт информацию о её полной структуре в JSON той же структуры.
3. Далее, всё так же в процессе обновления на стороне клиента, утилита сравнивает эталонный JSON из инсталлятора и тот JSON, что получился у конкретно клиента по его базе. Выявляет различия. Строит дифф-SQL. Выполняет дифф-SQL на базе клиента.
4. Итог - независимо от того, в каком состоянии у клиента база была до обновления, после обновления она будет на 100% соответствовать нужной структуре.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2022, 21:35
Помогаю со студенческими работами здесь

ADO Net C# Удаление сток из базы данных
есть SQL запрос на удаление строки. Нужно сделать так что бы из списка выбираю определённую строчку , нажимаю удалить и она удаляется не...

Программное создание базы данных через ADO.NET
Подскажите! Я везде нахожу примеры с SQL Server'ом. А если мне нужно создать через Access, то как это нужно сделать? (Что писать в строке...

Реализация базы данных на С# без ADO.net и SQL серверов
Здравствуйте уважаемые участники форума. Мне была поставлена задача создать реализацию базы данных без использования SQL сервера и других...

Проблемы с ADO при подключении базы данных в Visual Basic 6
Всем доброго времени суток! Как-то уже обращался к форумчанам с подобной проблемой, но не нашёл отклика. Проблема следующая: в VB6 создаю...

Вывод таблицы базы данных на форму при помощи ADO
Хай, у меня не получается вывести данные на форму. Т.е я создал ADOConnection, подключение к базе осуществляется, далее не пойму как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru