我目前正在工作的项目中,从EF迁移改为了Fluent Migrator。相比于EF迁移,Fluent Migrator有哪些优势?使用Fluent Migrator是否真的值得超过EF迁移?
我目前正在工作的项目中,从EF迁移改为了Fluent Migrator。相比于EF迁移,Fluent Migrator有哪些优势?使用Fluent Migrator是否真的值得超过EF迁移?
EF迁移本质上是代码优先的 - 首先编写模型,运行ef
命令生成自动迁移,然后更新数据库。无论多么复杂,自动迁移总是有问题的。首先,诸如列重命名、删除未使用列之类的事情总是有问题的。此外,如果您正在使用F#记录类型或C# POCO对象,则为了促进迁移,您通常必须使用特定于迁移的属性装饰普通DB实体,这是不可取的。
其次,EF迁移不容易打包为独立的控制台应用程序。将迁移打包到单独的可执行文件中总是更好的选择,因为应用程序的使用者不需要担心知道特定的命令,例如实体框架迁移命令。像FluentMigrator
和DbUp
这样的软件包使打包变得非常容易。但是,它取决于应用程序的需求。例如,如果您正在构建开源WordPress样式的博客引擎等现成应用程序,并且您的受众不熟悉.net core,则将迁移作为专用实用程序会很有帮助。
您可能希望选择以编程方式运行
ef迁移
,但这仍然是反模式,因为在容器世界中,多个容器可能会产生竞争条件,并需要特殊关注,因此最好为此设置单独的控制台项目。