【问题标题】:Which ORM frameworks will build and execute the SQL DDL for you?哪些 ORM 框架将为您构建和执行 SQL DDL?
【发布时间】:2011-08-19 15:38:24
【问题描述】:

Entity Framework Code First 将为您构建数据库(如果它不存在)并根据您的映射对象构建它。我相信 Roundhouse 会使用 NHibernate 对 Fluent Mapping 文件做同样的事情。

是否有任何其他 ORM(或 Roundhouse 之类的工具)可以处理所有 SQL DDL 创建和执行?

【问题讨论】:

    标签: sql nhibernate entity-framework orm roundhouse


    【解决方案1】:

    NHibernate 不需要到 generate database schema 的 Fluent 映射。此功能内置于 NHibernate 核心中:

    new SchemaExport(_configuration).Execute(false, true, false);
    

    然而,根据我的经验,这对于内存集成测试或初始部署非常有用。生产数据库需要为upgraded。如果你坚持,那么你将需要在不影响数据的情况下添加和删除列、表和外键。它具有连续性和版本控制方面。 NHibernate 只知道您的 当前 映射。例如,它不知道 2 个月前您将客户的名字和姓氏存储在名为“CustomerName”的列中,然后您决定将其拆分为“FirstName”和“LastName”两列(这可能是最原始的更改可以制作)。 NHibernate 的工作是将您当前的模式映射到对象,而不是记住几年前的数据建模选择。

    根据我的经验,没有可以编写升级脚本的神奇工具,它们必须手动编写或至少由开发人员审查。工具可以为您提供执行这些脚本的框架,例如RoundhouseE。 Scott Allen 有一个 excellent series 关于“forward-only, run-once”的方法。

    【讨论】:

    【解决方案2】:

    如果您在配置文件中将hbm2ddl.auto 设置为createcreate-dropupdate,则休眠会执行此操作。也就是说,使用 Java,我假设 nHibernate 也是如此。

    如果 ORM 不做 ddl,那么拥有它并没有多大意义,至少它是一个关键特性。恕我直言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 2010-10-10
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多