根据该数据库的更新版本,验证和更新旧mysql数据库的结构(表,列)。

时间:2020-04-06 17:03:52

标签: mysql vb.net

我在.NET中构建了一个CRM应用程序,用于商业用途。

对于数据库,我选择MySQL服务器。

每个新软件版本都需要更改MySQL数据库结构(添加列,添加表,更改列的类型等)。

发布新版本的软件时,我需要找到一种有效的方法

  • 基于我的原始(最新)MySQL数据库验证客户的数据库
  • 如果存在更改,则更新我的客户的数据库。

1 个答案:

答案 0 :(得分:1)

让我们从您所提出的问题开始:

每个新软件版本都需要更改MySQL数据库结构(添加列,添加表,更改列的类型等)。

如果您正在开发商业CRM应用程序,那么坏的做法是要求在每个新版本中都进行数据库更新。这意味着不良的设计和分析。我在这里发表评论的重点是,您应该以不需要在每个新版本中都进行数据库更新的方式设计应用程序。 接下来,您在同一条语句中写道:“更改列的类型”。相信我,您不想在存在数据的客户数据库中这样做。您永远不应处于需要更改数据库中包含数据的列类型的位置。这里没有空间可以对此进行分析,但请相信我。

话虽如此,让我们继续您的问题。 如果要使用数据库构建商业应用程序,则实际上有3个关于数据库更新要求的选项。

  1. 用手做所有事情。维护您自己的数据库升级脚本在各个版本之间,并根据需要应用它们。这是最痛苦的方式,但是它使您可以自由地进行所需的任何操作。包括更改列的类型。如果您的应用程序相对较小,则应首选此方法。
  2. 使用免费的ORM库,例如Entity Framework。这样一来,您便可以更加灵活地专注于应用程序的业务逻辑,因为它消除了开发人员通常需要编写的大多数数据访问代码。此外,还有多种自动迁移数据库的方法。以here为例。如果您的应用程序对数据的持久性和访问没有任何特殊或不常见的要求,那么您应该这样做。
  3. 使用DevExpress XPO之类的商业ORM库(如果您不想购买支持,实际上是免费的,但我强烈建议您购买)。您将获得ORM库的所有好处,以及许多增强功能,例如数据过滤自定义,客户端数据处理,对BLOB数据(如图像或其他二进制文件)的更轻松处理,更广泛的数据库支持(如SQL Server,MySQL,Oracle,PostgreSQL, Firebird等。我已经使用XPO多年了,对此我感到非常满意。如果您的应用程序有特殊的数据处理需求,那么我建议这样做。

结论:您绝对应该使用ORM库,因为它允许您将应用程序的业务逻辑与数据层分开,并且不将应用程序与一种数据库绑定,因此给您更大的灵活性。例如,您可以创建应用程序的BOM(业务对象模型),并将其与Web API,桌面客户端,Web应用程序等许多变体一起使用。

希望这会有所帮助。

相关问题