支持“OdeToFoodDb”上下文的模型已在数据库创建后发生更改
2015-05-05 17:19
411 查看
“/”应用程序中的服务器错误。
支持“OdeToFoodDb”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 支持“OdeToFoodDb”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
参照 http://www.cnblogs.com/xiaodoublog/archive/2013/01/29/2881028.html
解决:
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" />
相关文章推荐
- 支持“WeShopDb”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
- 支持“XXXDbContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=2
- 关于MVC 更改字段时 提示支持“MovieDBContext”上下文的模型已在数据库创建后发生更改
- 支持“xxx”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
- 支持“***Context”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
- 【C# - Entity Framework】支持“QlogEntities”上下文的模型已在数据库创建后发生更改
- 支持“XX”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
- 支持“EFDBContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
- 错误:支持“EFDbContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId
- 支持“xxxContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
- ASP.NET MVC 如何解决“上下文的模型已在数据库创建后发生更改”问题
- ASP.NET MVC 如何解决“上下文的模型已在数据库创建后发生更改”问题
- LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件
- 创建数据库后支持的模型被更改,考虑使用代码优先更新数据库
- 转载LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- 设计修改MSSQLServer 数据库表 字段 报错 ALTER TABLE only allows columns ... 对无法重新创建的表进行了更改...
- 关于code first 创建并更改已经创建好的数据库的方法【本人真实操作】
- 如何在SQL Server上Enable Filestream以及创建一个支持File Stream的DB?