当数据库发生变化时,你如何管理你的 ORM 层?
Posted
技术标签:
【中文标题】当数据库发生变化时,你如何管理你的 ORM 层?【英文标题】:How do you manage your ORM layer when database undergoes changes? 【发布时间】:2009-02-05 17:28:23 【问题描述】:我了解不自动刷新 .dbml (Linq2Sql)、.edmx (Linq2Entities) 或 .hbm.xml (NHibernate) 的原因。在每个 ORM 解决方案中,如果您在数据库中有更改,则需要更新这些文件。 如果您 100% 确定不会破坏任何内容,有没有办法自动刷新这些文件?
我相当熟悉 RoR 中的迁移。 .NET 世界中是否有可靠的迁移工具?
一般来说,您如何在数据库设计方面保持敏捷,而不是一次又一次地手动重新创建这些映射文件?
如果此问题重复,请提供链接。我找不到。
【问题讨论】:
【参考方案1】:我不确定您对更新 EDMX 有何犹豫。继续并从数据库中更新您的模型。很有可能它会起作用。但如果没有,只需从源代码管理中获取旧版本,然后手动进行更改。
另一方面,使用 LINQ to SQL 就更难了,因为没有更新功能。您必须从模型中删除更改的对象,重新添加它们,然后手动重新应用您所做的任何更改。同样,源代码控制在这里至关重要。您需要将 XML 文件与以前的版本进行比较,以确保您没有忘记任何内容。
我不确定您关于迁移的问题是什么意思。是的,有一个工具 (RikMigrations),它的作用与 Rails 中的迁移类似。但是迁移当然会改变你的数据库元数据。它们不会更改您的 ORM 映射。这是在其他地方完成的,在 Rails 和 .NET 中。
【讨论】:
我的问题是删除并再次拖放 edmx。它有点重复 你在考虑 Linq to SQL 吗? EDMX 是实体框架,不需要它。以上是关于当数据库发生变化时,你如何管理你的 ORM 层?的主要内容,如果未能解决你的问题,请参考以下文章