gpt4 book ai didi

NHibernate,ORM : how is refactoring handled?现有数据?

转载 作者:行者123 更新时间:2023-12-03 09:31:44 25 4
gpt4 key购买 nike

使用ORM(尤其是NHibernate)时,如何处理数据重构?我的意思是,如果数据对象发生更改,从而使基础关系数据库架构发生更改,那么ORM在数据库的架构升级/降级方面是否提供任何帮助?如何将现有数据迁移到新架构?

我正在就使用ORM做出决策,并且接触范围非常有限。如果问题天真,请忍受。

最佳答案

在NHibernate中,您可以使用SchemaUpdate类对架构进行附加更改。 (其他更改将包括新表,新列等,但不包括删除。)SchemaUpdate旨在用于开发目的,而不能在生产环境中运行。我强烈建议您使用SQL迁移工具,例如Tarantino,dbdeploy.net,RikMigrations或类似工具。

迁移工具有两种形式-基于SQL脚本(Tarantino和dbdeploy.net)和基于代码(RikMigrations和Rails样式的迁移)。使用基于代码的迁移工具,您可以使用C#,VB,Ruby等编写的代码编写迁移。基于SQL脚本的工具采用一组有序的SQL脚本。在这两种情况下,迁移工具都将对您以前从未运行过的数据库进行任何迁移。 (通常,迁移表列出了已运行的脚本,并允许该工具确定仍需要运行的脚本。)SQL脚本是通过以下方式生成的:

// SchemaUpdate.Execute(bool script, bool doUpdate)
new SchemaUpdate(cfg).Execute(true, false);

然后进行编辑以进行品尝。或者,您可以使用NHibernate的SchemaExport并使用诸如Microsoft Visual Studio for Database Professionals Ultimate Now With Extra Mayo Edition(aka DataDude)或RedGate SQL Compare之类的模式差异工具来生成新模式。您将需要手工编写转换脚本,因为SQL迁移工具通常无法知道将T/F填充的Foo char(1)列转换为该Bar位列。

就我个人而言,我更喜欢基于SQL脚本的迁移工具,因为我可以使用工具生成架构差异,然后进行编辑以进行品尝,而不必使用C#或类似语言手动滚动整个迁移。

关于NHibernate,ORM : how is refactoring handled?现有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com