Fluent Migrator 相对于 EF 迁移的优势?

Benefits of Fluent Migrator over EF migrations?

我目前在做的项目,已经从EF migrations改成了fluent migrator。 fluent migrator 比 ef 迁移有什么好处?是否真的值得使用 EF 迁移?

EF 迁移本质上是 code-first - 你先写模型,运行 ef 命令生成自动迁移然后更新数据库.无论多么复杂,自动迁移 总是有问题。首先,列重命名、删除未使用的列之类的事情总是有问题的。此外,如果您使用 F# 记录类型或 C# POCO 对象,那么为了便于迁移,您通常必须使用不需要的迁移特定属性来装饰您的普通数据库实体。

其次,作为独立的控制台应用程序,EF 迁移并不容易 package-able。将迁移打包到单独的可执行应用程序中始终是一个更好的主意,因为您的应用程序的使用者不必担心了解 entity framework 迁移命令等特定命令。 FluentMigratorDbUp 等包使得打包成可执行文件变得非常容易。但是,这取决于应用程序的需要。例如,如果您正在构建 off-the-shelf 类似开源 Wordpress 风格博客引擎的应用程序,并且如果您的受众不熟悉 .net 核心,那么迁移为专用实用程序会很有帮助。

You might want to choose to run ef migrations programmatically but that again is an anti-pattern as in container world, multiple container might yield race condition and needs special care, thus always better to have separate console project for this.