【问题标题】:Should/can one generate a database schema of ones classes?应该/可以生成一个类的数据库模式吗?
【发布时间】:2010-11-11 17:26:25
【问题描述】:

我已经使用 Visual Studio 类图表设计了一些类。现在我想使用 ORM 和其他持久性机制来持久化这些数据。我想知道是否有一种方法可以根据我的类中的属性生成 SQL,因为它们很好地代表了所需的数据库结构。这将为我节省大量手动 SQL 输入,并给我一个良好的开端。

我没有从数据库模型开始,因为我想让我的持久性与实际的“域层”分离(不确定这是否是正确的命名)。

ORM 映射器(LLBLGen)然后可以根据这个模式生成编码,我只需要将生成的对象映射到我的持久化接口。

这是个好主意,还是我走错了路?

我找到了一个似乎可以完成这项工作的工具(MindScape LightSpeed),但不幸的是它仅适用于 VS2008。

【问题讨论】:

    标签: database-design orm code-generation


    【解决方案1】:

    有许多 ORM 可以从域模型类生成数据库模式。此外,还有一些专门为这种开发方式设计的 ORM。这是“Model First”“Code First”的概念,有人认为这是数据库应用程序开发的未来,因为现在LINQ正在取代SQL。例如下一个版本的实体框架将完全支持这个概念。我可以推荐尝试DataObjects.Net,它会自动生成和升级数据库架构并支持 LINQ 查询。

    【讨论】:

    • 感谢您的澄清,Alex,我也会查看 do.net!
    【解决方案2】:

    这是个坏主意。类设计和数据库设计不是一回事。

    就个人而言,我使用免费的 Visual Studio 插件 NORMA 在概念级别进行设计。它将从概念模型生成模式,也可以生成类。

    它生成的类对我来说有点重,但事实证明代码生成可以自定义,如果你不害怕 XSLT。

    由于对象角色建模的性质,您对模型施加的约束可用于推断数据库架构和“类”模型。

    【讨论】:

      【解决方案3】:

      这取决于。如果项目很小,并且您的截止日期很紧。当然。然而,生成的代码几乎总是比手写代码更难维护。这与数据库模式生成相同。看看你的项目范围。甚至可以生成数据库,看看你是否喜欢它的外观。然后自己决定。重新评估您的下一个项目。一种尺寸并不适合所有人。

      【讨论】:

      • 这确实是一个小项目,数据库架构比较扁平。关于如何做到这一点的任何想法? (我可以自己使用反射来完成,但不会节省任何时间;))
      • 我使用 Sparx Enterprise Architect 以低廉的价格完成了这项工作。导入类,然后使用 Transform 命令将它们转换为 DDL。如果这是一次性破解,请获取试用版。
      • 我肯定会使用第 3 方 ORM,而不是尝试创建自己的解决方案。 LLBLGen 不是一个糟糕的选择。你也可以使用 NHibernate。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2015-04-17
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多