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

问题描述 投票:0回答:1

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

错误1

在表'Keys'上引入FOREIGN KEY约束'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.Conventions.Remove<OneToManyCascadeDeleteConvention>();

添加固定问题的行类型和错误1已经消失,但现在API没有找到实际在数据库中的记录。我不知道为什么会这样。

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

错误2

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

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

任何从这个烂摊子中恢复的帮助都非常感谢!谢谢!

更新1

我与微软工程师合作,“自创建数据库以来,支持'NameDbContext'上下文的模型已经发生了变化”错误。我将以下内容添加到Global.asax.cs文件中的Application_Start()中。添加它不会删除或更改SQL中的任何数据。错误消息2消失了。 API仍然没有返回数据库中的记录,所以我仍然有一个问题需要修复。

Database.SetInitializer<FaceOffersDbContext>(null);

更新2

我在本地运行我的API没有任何问题。这意味着问题仅发生在Azure中。我正在与微软合作缩小问题范围并提出解决方案。

entity-framework ef-code-first asp.net-web-api2
1个回答
0
投票

您的数据库架构似乎已更改,而不是您的实体框架,您可以尝试使用包管理器控制台强制更新数据库。

© www.soinside.com 2019 - 2024. All rights reserved.