错误:自创建数据库以来,支持“ NameDbContext”上下文的模型已更改

时间:2019-04-12 14:51:26

标签: entity-framework ef-code-first asp.net-web-api2

我要解决的原始问题与此错误消息有关。这是在Azure上运行的Web API 2项目中发生的。

错误1

在表“键”上引入外键约束“ FK_dbo.Merchant_MerchantId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。

仅当我尝试将API的发布版本上载到Azure应用服务后,才引入FOREGIN KEY错误消息。我最近升级到了Visual Studio 2017的15.9.11版,但我不知道这是否是导致此混乱的FOREIGN KEY问题的原因。该API和数据库已经运行了多年,没有任何问题。

要尝试解决此问题,我在OnModelCreating(DbModelBuilder modelBuilder)方法中添加了以下行。

modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

添加行类型可解决此问题,并且错误1消失了,但是现在API并未找到数据库中实际存在的记录。我不确定为什么会这样。

此后,我已注释掉该行,并上传了我的App Service的新版本。我现在收到此错误消息。

错误2

错误:自创建数据库以来,支持“ NameDbContext”上下文的模型已更改。

在这个阶段,我引起了更多的问题,而不是解决我原来的问题。

从这个混乱中恢复过来的任何帮助都非常感谢!谢谢!

更新1

我与Microsoft工程师一起处理了“自创建数据库以来,支持'NameDbContext'上下文的模型已更改”的错误。我在Global.asax.cs文件的Application_Start()中添加了以下内容。添加此操作不会删除或更改SQL中的任何数据。错误消息2已消失。该API仍未返回数据库中的记录,因此我仍然有问题要解决。

Database.SetInitializer<FaceOffersDbContext>(null);

更新2

我在本地运行API没问题。这意味着该问题仅在Azure中发生。我正在与Microsoft合作以缩小问题范围并提出解决方案。

1 个答案:

答案 0 :(得分:0)

您的数据库架构似乎已更改,而不是每次更改,您可能会尝试使用程序包管理器控制台强制更新数据库。