【问题标题】:Building SQL DDL statements: which patterns are appropriate?构建 SQL DDL 语句:哪些模式是合适的?
【发布时间】:2011-11-08 16:28:43
【问题描述】:

我曾在某处看到用于创建 DML SQL 语句的构建器模式。我想知道,哪种模式(更)适合构建 SQL DDL 语句。

我正在考虑创建(动态)简单 SQL DDL 语句的简单程序(DB 工具,仅用于自学目的)。我不确定我应该考虑哪些模式。

工厂模式允许我将客户端代码与具体的数据库提供程序类库分离。我想这是一个明确的选择(如果我错了,请纠正我)。装饰器模式是我构建 sql 语句的首选,但是在编写了一些示例然后阅读 this answer 之后,我几乎可以肯定,我不应该使用装饰器,因为我正在构建对象而不是装饰已经创建的对象。

那么.. 我应该考虑哪些模式以及为什么在这种情况下它们更好/更好?

更新澄清。

【问题讨论】:

  • 您的应用程序需要动态编写 DDL 的情况相对较少,除非您正在编写 DB 工具。你确定这是最合适的设计吗?
  • 是的,我在考虑DB工具,是的,DDL语句将动态创建。

标签: c# .net sql design-patterns


【解决方案1】:

您的 DB 工具的“核心”需要以独立于 DB 的形式表示它所拥有的知识,并且当时间到来时,特定于数据库的代码会接管并将该知识转换为特定于 DB 的 DDL。

您可能需要某种依赖注入来完成此操作。基本思想是这样的:应用程序的核心只与接口一起工作,除了这些接口中声明的内容之外,永远不知道任何事情。在运行时,实现这些接口的特定于 DB 的对象被实例化并“注入”到核心中。创建而不是盲目地“调用”它们,就像实现相同接口集的任何其他对象集一样。

如果需要支持另一个 DB,则需要创建另一组实现这些接口并在运行时实例化它们的类。

当然,这只是一个理论。您会发现不同数据库系统之间存在许多细微差别,我怀疑您很难以完全概括的方式表示所有这些...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2012-01-31
    • 2017-11-11
    • 1970-01-01
    • 2015-09-09
    相关资源
    最近更新 更多