支持“OdeToFoodDb”上下文的模型已在数据库创建后发生更改
/”应用程序中的服务器错误。
支持“OdeToFoodDb”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.InvalidOperationException: 支持“OdeToFoodDb”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
解决:
PM> Enable-Migrations
在程序集“MVCPluginDemo.UI”中找到多个上下文类型。
要允许“MVCPluginDemo.UI.Models.ApplicationDbContext”的迁移,请使用 Enable-Migrations -ContextTypeName MVCPluginDemo.UI.Models.ApplicationDbContext。
要允许“MVCPluginDemo.UI.Models.OdeToFoodDb”的迁移,请使用 Enable-Migrations -ContextTypeName MVCPluginDemo.UI.Models.OdeToFoodDb。
PM> Enable-Migrations -ContextTypeName MVCPluginDemo.UI.Models.OdeToFoodDb
正在检查上下文的目标是否为现有数据库...
检测到使用数据库初始值设定项创建的数据库。已搭建与现有数据库对应的迁移“201504290901388_InitialCreate”的基架。若要改用自动迁移,请删除 Migrations 文件夹并重新运行指定了 -EnableAutomaticMigrations 参数的 Enable-Migrations。
已为项目 MVCPluginDemo.UI 启用 Code First 迁移。
启动后仍旧无效!!!
打开生成后的 Configuration,修改相关默认值:
public Configuration()
{
AutomaticMigrationsEnabled = true; //默认为 false
ContextKey = "aspnet-MVCPluginDemo"; // 必须和配置文件数据库名称 一致,默认为上下文名称。
}
重新运行,搞定!
更改数据库连接串:
参照网上解决方案:
PM> Update-Database
指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句。
正在应用显式迁移: [201504290901388_InitialCreate]。
正在应用显式迁移: 201504290901388_InitialCreate。
正在应用自动迁移: 201505050733046_AutomaticMigration。
未应用自动迁移,因为自动迁移会导致数据丢失。
再次启用自动迁移:
PM> Enable-Migrations -ContextTypeName MVCPluginDemo.UI.Models.OdeToFoodDb -Force
正在检查上下文的目标是否为现有数据库...
已为项目 MVCPluginDemo.UI 启用 Code First 迁移。
重新输入数据库更新命令:
PM> Update-Database
指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句。
正在应用显式迁移: [201504290901388_InitialCreate]。
正在应用显式迁移: 201504290901388_InitialCreate。
无法将数据库更新为与当前模型匹配,因为存在挂起的更改并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。
您可使用 Add-Migration 命令将挂起的模型更改写入基于代码的迁移。
按照提示,将配置文件 Configuration 修改
AutomaticMigrationsEnabled = true; //默认为 false
问题依旧!!!
反复尝试多次,错误也依旧,于是删除了生成的自动迁移文件
再次尝试,ok!生成成功!!
注: 修改后的数据库连接串:
<add name="OdeToFoodDbMy" connectionString="Data Source=(local);Initial Catalog=OdeToFoodDb;user id=sa;pwd=server;" providerName="System.Data.SqlClient" />
附上原文地址:万分感谢博主