【问题标题】:What are best practices for database queries?数据库查询的最佳实践是什么?
【发布时间】:2010-10-27 17:07:08
【问题描述】:

我想知道什么是数据库查询的最佳实践。我正在使用 C#,mysql 数据库。

我有一个应用程序,其中我对所有数据库查询进行了硬编码。现在客户已经修改了数据库结构。所以我必须再次修改这些查询,因为所有查询都在代码中,我需要测试应用程序、构建它、创建安装程序并做更多与部署相关的事情。

如何避免此类问题?我们应该在哪里保留我们的查询?在一些纯文本文件或 app.config 中或其他地方?

我更喜欢可配置的查询,这样当发生这种情况时,只需更改配置,无需更改代码或可执行文件。

我们没有使用存储过程,也没有使用 ORM 框架。

提前致谢

感谢大家的宝贵意见。我认为在当前情况下,我能做的最好的事情就是修改查询并尝试从下一次开始强调存储过程。

再次感谢。

【问题讨论】:

  • “我们没有使用存储过程”为什么不呢?
  • @GôTô,我们没有使用存储过程,因为该决定来自上层管理......

标签: c# database


【解决方案1】:

我们没有使用存储过程,也没有使用 ORM 框架。

那些将是您真正的选择。如果你不使用它们,那你就不走运了。

也许对您来说最佳做法不是技术性的,而是组织性的。设置有关修改数据库的流程。

  • 对数据库的更改必须经过所有相关方的讨论和同意
  • 应提前通知所有相关方有关数据库更改的信息,以便有时间对其做出反应

【讨论】:

  • @Shekhar,我同意@Developer Art。在我看来,该组织已将您锁定在最佳实践中。
  • 我想是的。我建议使用存储过程,但是......无论如何,我认为在这种情况下,我能做的最好的事情就是再次更改查询。
【解决方案2】:

存储过程可以解决大部分问题。充分的架构规划(为其编写代码之前)也有助于抵消它。

另一种方法是让您的程序调用某种数据库 API。将所有内容分开并通过共享模型库访问它。

【讨论】:

    【解决方案3】:

    做到这一点的一种方法是让您的程序使用某种通信 dll,这样,如果数据库发生变化,您只需更改您正在调用的程序集。

    但是,除非您将其编写为完全通用的,否则使用键值对或其他变量作为变量,您仍然会受到同样的影响。

    另一种方法是通过存储过程,在数据库中完成所有工作,然后调用存储过程来完成工作。

    但是,这仍然可能会发生变化。

    【讨论】:

      【解决方案4】:

      您可以将数据访问层添加到您的项目,然后将数据集添加到数据访问层。数据集 (.xsd) 文件将帮助您组织查询。您将能够将所有查询添加到数据集中,这将是您编辑/删除或添加新查询的一站式服务。例如:请到以下链接

      http://www.shiningstar.net/aspnet_articles/DataSet/DataSetProject6.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 2014-11-12
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多