Давайте начнем с формулировки вопроса:
Каждая новая версия программного обеспечения требует изменений в структуре базы данных MySQL (добавление столбцов, добавление таблиц, изменение типа столбца и т. Д. c).
Если вы разрабатываете коммерческое приложение CRM, плохой практикой является требование обновления базы данных в КАЖДОЙ новой версии. Это подразумевает плохой дизайн и анализ. Суть моего комментария в том, что вы должны разрабатывать свое приложение так, чтобы оно не нуждалось в обновлении базы данных в каждой новой версии. Далее в том же заявлении вы написали: «измените тип столбца». Поверьте, вы не хотите делать это в базе данных клиента с данными. Вы никогда не должны находиться в положении, когда вам нужно изменить тип столбца в базе данных с данными в нем. Здесь нет места для анализа этого, но поверьте мне на слово.
С учетом сказанного, давайте перейдем к вашему вопросу. Если вы создаете коммерческое приложение с базой данных, тогда у вас есть 3 варианта относительно требования обновления базы данных.
- Делайте все вручную. Поддерживайте свои собственные сценарии обновления БД с версии на версию и применяйте их по мере необходимости. Это самый болезненный способ сделать это, но он дает вам свободу делать все, что вы хотите. В том числе изменение типа столбца. Если ваше приложение относительно маленькое, то вам следует предпочесть этот метод.
- Используйте бесплатную библиотеку ORM, например Entity Framework . Это даст вам больше гибкости при фокусировке в бизнес-логике приложения, поскольку устраняет необходимость в большей части кода доступа к данным, который обычно приходится писать разработчикам. Кроме того, есть различные способы автоматической миграции базы данных. Взгляните, например, здесь . Если ваше приложение не имеет каких-либо особых или необычных требований в отношении сохранности и доступа к данным, вам следует go с этим.
- Использовать коммерческую библиотеку ORM, например Dev Express XPO (на самом деле бесплатно, если вы не хотите покупать поддержку, но я настоятельно рекомендую купить). Вы получите все преимущества библиотеки ORM, а также множество улучшений, таких как, например, настройка фильтрации данных, обработка данных клиента, упрощенная обработка BLOB-данных, таких как изображения или другие двоичные файлы, расширенная поддержка базы данных, например SQL Server, MySQL, Oracle, PostgreSQL, Firebird et c. Я использую XPO уже много лет, и я вполне доволен этим. Если в вашем приложении есть особые потребности в обработке данных, я рекомендую это.
Вывод: Вам определенно следует go с библиотекой ORM, поскольку она позволяет отделить бизнес-логи c вашего приложения из уровня данных и не связывает приложение с одним типом базы данных и, таким образом, дает вам большую гибкость. Например, вы можете создать спецификацию (Business Object Model) вашего приложения и использовать ее со многими вариантами, такими как веб-API, настольные клиенты, веб-приложения и т. Д. c.
Надеюсь, это поможет.