【发布时间】:2015-11-18 20:19:50
【问题描述】:
我已经尝试了许多 EF 迁移 v6.0.1 的变体(从无数据库到空数据库到现有数据库),我遇到了一个特殊问题,即 Azure 数据库实例无法正确使用 Octopus deploy 在首次部署时创建。
有很多地方可能会出错,所以我想如果可以的话,我会和你们一起检查一些 EF Code First 迁移的基础知识:
如果我创建了代码优先模型,并且知道数据库在 Azure 上的目标数据库服务器中不存在。使用默认的“CreateDatabaseIfNotExists”方法和禁用 AutomaticMigrations;
如果我随后使用包含我的 DbContext 和迁移配置的程序集调用“migrate.exe”,我会得到一个使用模型当前状态创建的新数据库吗?还是我会得到一个没有任何内容的新数据库?即我是否需要为模型的初始状态显式“添加迁移”?
我在文档中读到数据库实例应该由迁移过程自动创建,但没有人明确说明(至少对我而言)这个新创建的数据库将使用当前模型生成而没有正式的“初始”状态的迁移创建。
所以问题是:我是否需要为 migrate.exe 生成显式迁移模型才能工作?
通过我尝试的任何方式,我得到了一个数据库,但应用程序启动时显示不友好的消息“无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code 创建的数据库的模型兼容性第一次迁移。”记住这是最初(从头开始)创建数据库的同一个应用程序库,我不明白这是怎么发生的!
我确实通过 SQL Server 管理工作室手动删除了几次目标数据库,这很糟糕吗?我是否删除了一些需要恢复的重要用户帐户?
【问题讨论】:
-
我为文字墙道歉,但我希望我的回答能让您更深入地了解实际发生的情况。
-
这里不需要道歉,这是一堵巨大的文字墙,我只是在阅读它。我有几个问题将附加到您的答案中。谢谢!
标签: c# database entity-framework azure entity-framework-migrations