似乎我在做这件事时总是遇到各种各样的问题,通常我最终会因为沮丧和重建而破坏数据库,但显然必须有一些方法来做到这一点。
我有一个现有的 asp.net mvc web 应用程序,它的 sql 数据库在 azure 中。 Works fine 有一些可以替换的数据,但是,重点是学习如何在不破坏数据库的情况下更新模型。
在 VS2017 中我添加了一个属性 public string ScreenShot { get;放; }
我对我的 mvc 和 web api Controller 做了一些小改动来处理这个额外的属性。我通过 packmanager 控制台和 add-migration addprop
和 update-database
更新我的 localdb。工作正常,在本地运行,没有问题。
转到发布,转到设置,检查更新数据库。点击发布。 它挂起大约 5 或 6 分钟,我得到:
Warning : A project which specifies SQL Server 2016 as the target platform may experience compatibility issues with Microsoft Azure SQL Database v12. when publishing
我尝试发布几次并得到相同的结果。谷歌,环顾四周,挠挠头,再试一次,它似乎发布了。站点打开,不知何故我丢失了 Bootstrap 主题。事实上,在我的 Content 文件夹中,我现在有 4 个我认为是新的文件:bootstrap-theme。 (css,css.map, min.css, min.css.map)
(相同的前缀,不同的后缀)以及我认为是名称中没有主题的原始版本,似乎是默认的 mvc 主题为黑色和白色。
当我转到我的应用程序时,出现一般错误并检查 elmah,我得到:
System.InvalidOperationException: The model backing the 'TaskTrackerContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/? LinkId=238269).
嗯,我真的以为我就是这么做的。差点忘了一件事!也许这就是我的问题所在:我实际上不得不运行两次迁移——除了模型更改之外,我删除了一个从未使用过的列(为我的一个模型的 DTO 版本搭建一个 Controller ,将其添加到我的上下文中创建了一个表)。
在进行任何这些更改之前,我确实创建了一个新分支,这样我就可以恢复原状,但在某些时候我必须完成这项工作,并且必须了解如何在不破坏我的数据库和重新制作新分支的情况下完成它。 SQL 对象资源管理器中的检查显示它已将 ScreenShot 列添加到我的表中,但没有删除未使用的表。
最佳答案
关于css - asp.net mvc 模型的 EF Code First 模型更改后,如何在 Azure 中正确更新 SQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46614480/