【问题标题】:what this error means The model backing the 'OdeToFoodDb' context has changed since the database was created?这个错误意味着什么 支持“OdeToFoodDb”上下文的模型自数据库创建以来发生了变化?
【发布时间】:2015-11-24 06:22:10
【问题描述】:

我在现有的 db 表中添加了一列,突然 MVC 应用程序停止工作并出现错误

“/”应用程序中的服务器错误。

支持“OdeToFoodDb”上下文的模型自 数据库已创建。考虑使用 Code First 迁移来更新 数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.InvalidOperationException:模型支持 自创建数据库以来,“OdeToFoodDb”上下文已更改。 考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。

来源错误:

第 28 行: // };第 29 行:第 30 行:
var restaurant = _db.Restaurant 31 行:
.OrderByDescending(r => r.Reviews.Average(rv => rv.Rating)) 第 32 行:
.Where( r=>searchTerm == null || r.Name.StartsWith(searchTerm) )

为什么会发生这种情况,我该如何解决这个问题,尤其是是否可以不使用代码优先方法来解决这个问题?

【问题讨论】:

  • 嘿@Phill - 你看到我的回答了吗?

标签: asp.net-mvc-4


【解决方案1】:

这意味着您的一个模型(Code-First 将其转换为数据库中实际表的类)已更改。

这可以是其中一个字段的更改,例如添加键属性,或向模型添加新字段。

如果您不记得您所做的任何更改,您可以使用Verbose 关键字激活Update-Database 命令(如果Automatic Migrations 已打开,这是默认行为)。这将详细说明所做的更改,同时更新您的实际数据库。

此命令在 Visual Studio 内的 Package Manager Console 上运行。

像这样:

Update-database -verbose

顺便说一句,除非使用代码优先的方法,否则我认为无法解决此问题。

我唯一能想到的就是取消映射一些您想要在模型中而不是在数据库中的字段。这样 EF 就不会抱怨模型更改。 这可以使用位于指定字段顶部的NotMapped 属性来实现。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2013-10-29
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2011-04-05
    • 2015-04-01
    相关资源
    最近更新 更多