我有一个使用EF模型的数据库应用程序。此应用程序将使用一个数据库在同一网络中的多台计算机上运行。确保在有更新时可以正常工作。我想控制数据库的迁移和安装。
我认为如果应用程序匹配,我可以使用 context.database.Exists()和 context.database.CompatibleWithModel 禁用EF初始化程序和我的应用程序启动检查数据库。如果不是这种情况,我想在检查所有客户端是否都处于脱机状态后创建它。
但我的问题是当我运行 context.database.create()时, 我收到错误
{"无法更新数据库以匹配当前模型,因为那里 正在等待更改并禁用自动迁移。要么写 挂起的模型更改为基于代码的迁移或启用 自动迁移。组 DbMigrationsConfiguration.AutomaticMigrationsEnabled为true以启用 自动迁移。"}
控制数据库创建和从代码迁移的最佳方法是什么?而不是来自初始化器。
答案 0 :(得分:1)
您遇到的问题似乎与数据库创建无关。您的模型根本不再符合迁移规定的内容。只需运行add-migration脚本来重新生成迁移文件,一切都应该正常工作。如果您想允许自动迁移(不需要在模型更改后重新生成迁移类 - 但通常这是一个坏主意),只需在Configuration类中为迁移设置AutomaticMigrationsEnabled = true,这也将修复您的错误。要从代码控制迁移,您可以使用的最好的东西是DbMigrator。你这样使用它:
var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();
使用Update方法,您可以定义要迁移数据库的迁移。