【问题标题】:How to develop a web application compatible with multiple database management systems如何开发与多个数据库管理系统兼容的 Web 应用程序
【发布时间】:2010-08-27 06:53:13
【问题描述】:

您如何设计和管理应该与多个数据库管理系统(如 Oracle 和 MS SQL Server)兼容的 Web 应用程序的开发?

如果你不能使用像 NHibernate 或 EF 这样的 ORM,你如何在开发过程中维护数据库模式?

我现在的方法是在 SQL Server 上建立一个开发数据库,​​并在发布测试补丁之前将其移植到 Oracle(使用工具),以便在两个 rdbms 上测试软件。 (该工具还会生成应用程序用来升级数据库的文件)

这是一个好方法吗? Visual Studio 的数据库项目怎么样,它是保留我的数据库架构的更好方法吗?

编辑: 这个问题不是关于设计应用程序的架构(我已经有一个抽象的数据访问层),而是在开发过程中如何为不同类型的 rdbms 维护数据库模式。

【问题讨论】:

    标签: c# asp.net database rdbms


    【解决方案1】:

    我认为这样做的关键是确保您坚持标准 SQL 语法。 MS SQL Server 附带 Transact SQL (T-SQL),它是 ISO standard SQL 的超集,这意味着它有额外的语法,这不是标准 SQL 的正式组成部分。

    SQLZoo 是一个很好的站点,可以让您比较不同数据库的语法支持。您会发现您每天使用的大部分语法在大多数 DB 之间都是相同的,但也有一些怪癖。找到它们的最佳方法是检查每个环境中的每个查询,然后将它们签入源代码管理。

    您使用数据库项目的想法很好。它将允许您将更改快速部署到多个数据库并自动测试它们。

    【讨论】:

      【解决方案2】:

      模型驱动架构 (MDA):使用通用 Database modelling tool 来设计您的数据库架构。您定义表/关系/主键/等。以通用方式,然后让设计人员生成必要的 SQL 脚本(大多数支持输出到各种数据库)。当您更改数据库模型时,该工具将生成必要的 SQL 代码来更新数据库,或者从头开始生成它。这些工具还有助于生成文档和协助进行数据库版本控制等...

      我使用Context Database Designer,对工具和价格非常满意。 Enterprise Architect 看起来也是一个很棒的工具,具有生成和逆向工程代码的能力。

      【讨论】:

        【解决方案3】:

        实际上,处理此问题的唯一方法是将数据库访问与核心应用程序分离,以便您可以自定义每个数据库的访问代码。换句话说,正是 Nhibernate 和 EF 所做的。如果您不能使用其中一种工具,您仍然可以有效地以任何方式编写一种。这可能很有趣,但也会占用大量时间。所以我会问一些关于为什么不能使用 ORM 的严肃问题。

        【讨论】:

        • 我的问题不是关于C#代码的开发,而是如何维护不同种类rdbms的数据库架构
        猜你喜欢
        • 1970-01-01
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        相关资源
        最近更新 更多