The model backing the 'XXX' context has changed 错误

https://blog.csdn.net/hit_why/article/details/72778785

https://blog.csdn.net/hit_why/article/details/72778785

The model backing the ‘XXX‘ context has changed 错误

原创 2017年05月27日 10:18:47

  • 271

使用Entity FrameWork的Code First时,当改变模型的结构时,运行程序会出现The model backing the ‘XXX‘ context has changed 错误,因为这时模型结构与数据库中相应表的结构不一致,不能直接进行修改。

网上给出的解决方案一般是:

1-->简单删除数据库(包括其中的所有数据),然后让Code First使用默认规则(无数据库--创建新数据库)来使用更新模型创建数据库.

这显然非常麻烦。

2-->Code First在遇到模型变化时有一套初始化策略可供使用,该行为删除数据库并重建,默认是封装在名为CreateDatabaseIfNotExists的 类中,你可告知正在执行中的程序(本处是指控制台程序)使用哪个策略。

这样还是要删除并重建数据库,代价是很大的。

3-->需要在Global.asax中的Application_Start方法中加入:

Database.SetInitializer<Models.XXXXDBContext>(null);

这种方式没试过,应该是针对于MVC框架的。

这里我给出一种方案,网上也可以搜到:

1. 打开工具-->NuGet包管理器-->程序包管理器控制台

2.在PM>后面输入Enable-Migrations -ContextTypeName DatabaseName(如果执行失败,就参考失败信信息重新输入,失败信息提示的非常明确;DatabaseName是你生成的数据库名字),然后你发现项目里面增加了一个Migrations文件夹,里面自动生成了一些代码,这些代码试根据你的模型和改变生成的

3. 设置Migrations文件夹下面的Configuration文件中的代码:AutomaticMigrationsEnabled=true;也就是将false改为true

4. 在PM>后面输入Add-Migration InitialCreate

5. 在PM>后面 Update-Database -Verbose 或者Update-Database -Verbose -Force强制改变数据库。

之后每次改变模型时,只需在PM>后面 输入Update-Database -Verbose -Force就可以了。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hit_why/article/details/72778785

The model backing the 'XXX' context has changed 错误

原文地址:https://www.cnblogs.com/okgogo2000/p/8888236.html

时间: 2024-08-01 06:33:11

The model backing the 'XXX' context has changed 错误的相关文章

Model backing a DB Context has changed; Consider Code First Migrations

Model增加一个字段,数据库对应的也手动添加了字段但是运行时报错 The model backing the 'TopLogDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database  参考原文:Model backing a DB Context has changed; Consider Code Firs

The model backing the &#39;ProductContext&#39; context has changed since the database was created. EF6

学习<Entity Framework 6 Recipes 2nd Edition>,2-6. Splitting an Entity Among Multiple Tables中遇到几个问题 表结构: 操作 1.构造数据对象 public class Product { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int SKU { get; set; } public string Description {

Entity Framework : The model backing the &#39;&#39; context has changed since the database was created

1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the 'ProductModel' context has changed since the database was create 解决方法: 1.打开当前项目中的:程序包管理器控制台 2.输入:enable-migrations -ProjectName 'ProductModel' -Force 解释:'Pro

EF Code First(The model backing the &#39;***&#39; context has changed since the database was created.解决方法)(CSDN手动迁移)

错误消息: The model backing the '***' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269). 错误原因: (1)数据模型发生改变,而没有更新到数据库导致此问题. 事实上我遇到的情况不是原因(1),而是(2

No context type was found in the assembly &#39;xxx.xxxx&#39;. CodeFirst Ef错误

最简单的解决方案是将启动项目设置为你要生产Migration的项目. 例如: 我这边将Try.EntityFramework设置为启动项目.并且准备在该项目下生成Migration文件.这里的默认项目同样设置为Try.EntityFramework.就OK了. 2.另一种方案. 查看get-help Enable-Migrations帮助,发现启用迁移命令带了几个参数. Enable-Migrations [-ContextTypeName <String>] [-EnableAutomati

使用jQuery异步传递Model到控制器方法,并异步返回错误信息

需要通过jquery传递到控制器方法的Model为: public class Person { public string Name { get; set; } public int Age { get; set; } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-

Linux环境下MySQL报Table &#39;xxx&#39; doesn&#39;t exist错误解决方法

修改了lower_case_table_names=1 后,业务发有个库的表打不开了,看了表名以前是大写,查了一下如果设置不区分大小写, 以前的大小表名要改成小写.重启服务后可用! MYSQL在LINUX下数据库名.表名.列名.别名大小写规则如下: 1.数据库名与表名是严格区分大小写的 2.表的别名是严格区分大小写的 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格区分大小写的 Linux环境下MySQL报Table 'xxx' doesn't exist错误解决方法

The working copy at &#39;xxx&#39; is too old 错误解决

使用svn update更新时候提示: svn: E155036: The working copy at 'xxx' is too old (format 29) to work with client version '1.8.9 (r1591380)' (expects format 31). You need to upgrade the working copy first. 解决: 1.找到出错的目录,右键,有一个更新此文件夹的版本的选项,将此文件夹版本进行更新:2.更新版本后,如果

Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPointerException 错误的集中原因及解决办法

上面那个问题刚解决,就又来一个问题~~~~ 错误信息字符串:java.lang.RuntimeException: Unable to start activity ComponentInfo{...}: java.lang.NullPointerException 网上有不少解决办法 一般都会在Activity  onCreate()方法里的setContentView(XXX)发生此错误,网上查阅了很多原因,大概有四种重要可能的原因: 原因一:xxx的错误,若为R.layout.main