Entity Framework Code First Migration - 好还是坏?

3

当涉及到代码优先迁移技术时,我有一种奇怪的感觉。首先,这是一个起源于Ruby on Rails等技术的概念。不是我反对它,不要误会。我担心的是,在涉及到包括报告等高可扩展企业应用程序的情况下,使用Code First Migration是否是一个好的方法。基本上,我指的是数据库设计、优化在整体性能中起到关键作用的情况(去规范化、索引、分片等)。我的感觉是,代码优先迁移带来了很大的开销。我是对的吗,还是错了?我真的很想听听你们的意见。

1个回答

1

你错了。

EF Migrations与数据库设计方式无关。它只是一个一次性的过程,仅仅生成两个版本的数据库模式脚本,并自动找出如何从一个版本迁移到另一个版本。

Migrations不会在应用程序运行时运行,它没有任何开销或影响应用程序的性能。它只能使用现有的EF自动生成的模式工作。实际上,这个过程非常通用,甚至不特定于EF,Migrations可以用于在任何两个模式之间进行迁移,无论它们是否使用EF。

因此,它与数据库的性能无关。

模式由EF本身控制,并且取决于您如何映射数据库。是的,如果您让EF完成所有工作,您可能会得到一个不太优化的模式,但是您可以通过使用Fluent Mappings来完全控制它是如何生成的。


我所提到的开销是指在数据库模式必须更改以提高性能时进行维护过程的开销。我从未提到迁移会在应用程序运行时运行。 - Mihai H
@MihaiH - 我真的不明白你的观点。你必须以某种方式修改数据库,我不明白自动生成脚本这样做比手动操作更费力。 - Erik Funkenbusch
为了保持迁移同步,您需要知道迁移依赖于实际的POCO及其之间的关系。 - Mihai H
@MihaiH - 那又怎样?你没有清晰地表达你的观点,让人无法理解你真正的问题是什么。 - Erik Funkenbusch
1
实际上没有问题。我唯一怀疑的是迁移的好处。 - Mihai H
1
在迁移之前,EF 在修改模型时会删除表格。这将导致表格中的任何数据都丢失。使用迁移后,它将作为过程的一部分将数据迁移到新表格中。另一个好处是它可以自动生成脚本来应用架构更改到您的生产数据库中。 - Erik Funkenbusch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接