控制EF数据库的创建和迁移

本文关键字:迁移 创建 EF 数据库 控制 | 更新日期: 2023-09-27 18:01:31

我有一个使用EF模型作为数据库的应用程序。此应用程序将在使用一个数据库的同一网络中的多台计算机上运行。以确保这工作正常时,有更新。我想控制数据库的迁移和安装。

我想我可以禁用EF初始化器,并在我的应用程序启动检查使用context.database. exists ()context.database。CompatibleWithModel如果应用程序与数据库匹配。如果不是这样,我想在检查所有客户端是否离线后创建它。

但是我的问题是当我运行context.database.create()时,我得到一个错误

{"无法更新数据库以匹配当前模型,因为存在是挂起的更改,并且禁用了自动迁移。要么写挂起的模型更改为基于代码的迁移或启用自动迁移。集DbMigrationsConfiguration。AutomaticMigrationsEnabled为true以启用自动迁移。"}

控制DB创建和从代码迁移的最佳方法是什么?

控制EF数据库的创建和迁移

您遇到的问题似乎与数据库创建无关。您的模型只是简单地不再符合迁移状态。只需运行add-migration脚本来重新生成迁移文件,一切都应该正常工作。如果您希望允许自动迁移(不需要在模型更改后重新生成迁移类-但通常这是一个坏主意),只需在迁移的配置类中设置AutomaticMigrationsEnabled = true,这也将修复您的错误。要从代码中控制迁移,最好使用DbMigrator。你可以这样使用:

var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();

使用Update方法,您可以定义要将数据库迁移到哪个迁移。