1

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

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

4

2 回答 2

3

NHibernate 不需要 Fluent Mappings 来生成数据库模式。此功能内置于 NHibernate 核心中:

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

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

根据我的经验,没有可以编写升级脚本的神奇工具,它们必须手动编写或至少由开发人员审查。工具可以为您提供执行这些脚本的框架,例如RoundhouseE。斯科特艾伦有一个关于“只进,跑一次”方法的优秀 系列。

于 2011-08-21T18:30:54.560 回答
0

如果您在配置文件中设置hbm2ddl.autocreatecreate-drop或,休眠会执行此操作。update也就是说,使用 Java,我假设它与 nHibernate 相同。

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

于 2011-08-19T15:43:00.817 回答