【发布时间】:2019-04-12 14:51:26
【问题描述】:
我试图解决的原始问题与此错误消息有关。这发生在 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) 方法中添加了以下行。
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
添加行类型修复了问题,错误 1 已经消失,但现在 API 没有找到实际在数据库中的记录。我不确定为什么会这样。
此后,我已注释掉该行并上传了我的应用服务的新版本。我现在收到此错误消息。
错误 2
错误:支持“NameDbContext”上下文的模型自数据库创建以来已更改。
在这个阶段,我正在引发更多问题,而不是解决我原来的问题。
非常感谢您从这个混乱中恢复过来的任何帮助!谢谢!
更新 1
我与一位 Microsoft 工程师合作解决了“自创建数据库以来支持 'NameDbContext' 上下文的模型已更改”错误。我在 Global.asax.cs 文件中的 Application_Start() 中添加了以下内容。添加这个并没有删除或更改我在 SQL 中的任何数据。错误消息 2 已消失。 API 仍然没有返回数据库中的记录,所以我还有一个问题需要解决。
Database.SetInitializer<FaceOffersDbContext>(null);
更新 2
我在本地运行我的 API 没有任何问题。这意味着该问题仅发生在 Azure 中。我正在与 Microsoft 合作以缩小问题范围并提出解决方案。
【问题讨论】:
标签: entity-framework ef-code-first asp.net-web-api2