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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:自创建数据库以来,支持'NameDbContext'上下文的模型已更改相关的知识,希望对你有一定的参考价值。

我试图解决的原始问题与此错误消息有关。这是在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中。我正在与微软合作缩小问题范围并提出解决方案。

答案

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

以上是关于错误:自创建数据库以来,支持'NameDbContext'上下文的模型已更改的主要内容,如果未能解决你的问题,请参考以下文章

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

自创建数据库以来,支持上下文的模型已更改。考虑使用 Code First 迁移来更新数据库

如何用创建后的天数注释查询集

node的 require方法 自创建模块时 require中的exports对象挂载内部对象的数据

Webpack 杂谈帮助文档翻译:Webpack的模块

flutter 完全使用GetX 主题切换 以及 自创建Widget的颜色随主题变化方案