实体框架代码优先将在数据库不存在时为您构建数据库,并基于您的映射对象构建数据库。我相信Roundhouse会使用NHibernate对流畅的映射文件做同样的事情。
是否有其他ORM(或像Roundhouse这样的工具)可以处理所有SQL DDL的创建和执行?
发布于 2011-08-22 02:30:55
NHibernate不需要到generate database schema的流畅映射。此功能内置于NHibernate核心中:
new SchemaExport(_configuration).Execute(false, true, false);然而,根据我的经验,这对于内存中的集成测试或初始部署非常有用。生产数据库需要为upgraded。如果您坚持使用,那么您将需要在不影响数据的情况下添加和删除列、表和外键。它有一个连续性和版本化方面。NHibernate只知道您的当前映射。例如,它不知道2个月前您将客户的名字和姓氏存储在名为"CustomerName“的列中,然后您决定将其拆分为两列"FirstName”和"LastName“(这可能是可以进行的最基本的更改)。NHibernate的工作是将您当前的模式映射到对象,而不是记住几年前的数据建模选择。
在我的经验中,没有神奇的工具可以编写升级脚本,它们必须手动编写,或者至少由开发人员审查。工具可以为您提供执行这些脚本的框架,如RoundhouseE。Scott Allen有一个关于“forward-only,run-once”方法的excellent series。
发布于 2011-08-19 23:43:01
如果您在配置文件中将hbm2ddl.auto设置为create、create-drop或update,则hibernate将执行此操作。使用Java,也就是说,我假设nHibernate也是如此。
如果ORM不做ddl,那么拥有它就没有多大意义,至少它是一个关键特性。我的天。
https://stackoverflow.com/questions/7124025
复制相似问题