Entity Framework中的Migration问题
1、自从用上了Entity Framework(简称EF),妈妈再也不用担心我要写那么复杂的SQL语句了!
这是微软新一代的ORM工具,它能够将数据库的表中的记录映射成为程序中的一个对象,当然也能够将对象映射为数据库中的一条记录。
它支持三种模式Model First、Database First、Code First。
我们准备用那种方式呢?Code First。为什么呢?因为这只要写一次代码,而且不用去修改数据库。
那么,我们如果修改了代码,增加了一个字段,在model中写了之后,怎么自动修改数据库呢,用到Migration。
它有三步:
Enable-Migrations //允许使用迁移
Add-Migration 你设定一个名字(如 AddCloumText,增加字段Text) //它会自动判断这次的代码和上次的不同,然后将不同找出来
Update-database //更新数据库,它会根据不同,用sql语句修改数据库字段。
So easy是不?
2、EF的Code First方式允许你先写Model,再通过Model生成数据库和表。
具体步骤如下:
1、建项目
2、在model文件夹中,添加一个派生自DbContext的类,和一些Model类。
3、修改web.Config中的连接字符串。
4、生成基架Controller。
这样就可以生成数据库和表。
但实际开发中难免会修改模型和派生的Context,修改后再次运行会出现异常,提示“支持“MyContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库”异常。
可以通过如下步骤更新数据库,消除上述异常:
1、在项目的“程序包管理控制台"窗口,输入”enable-migrations",回车,导致在项目中生成一个“Migrations"文件夹,其中包含两个.cs类。
2、在1中生成的Configuration.cs中修改构造函数中代码为:”AutomaticMigrationsEnabled = true;“
3、保存修改后,在“程序包管理控制台"中输入”update-database",回车,再次运行即可。
3、Code First 迁移更新数据库
在使用 Code First 方式进行MVC程序设计中,更新数据库操作记录:
1.修改需要更新的Model,如:
在Company中增加一个列名,如下:
修改后将应用程序重新编译,然后选择工具>库程序包管理器>程序包管理控制台,如图:
打开控制台,输入enable-migrations -force ,然后回车 如图:
运行后在项目项目资源管理器中会出现Migrations文件夹,打开Configuration.cs 文件,将AutomaticMigrationsEnabled 值改为 true.
然后在控制台中输入 update-database 运行
Entity Framework中的Migration问题的更多相关文章
- Entity Framework 教程——Entity Framework中的实体类型
Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...
- 关于Entity Framework中的Attached报错相关解决方案的总结
关于Entity Framework中的Attached报错的问题,我这里分为以下几种类型,每种类型我都给出相应的解决方案,希望能给大家带来一些的帮助,当然作为读者的您如果觉得有不同的意见或更好的方法 ...
- 关于Entity Framework中的Attached报错的完美解决方案终极版
之前发表过一篇文章题为<关于Entity Framework中的Attached报错的完美解决方案>,那篇文章确实能解决单个实体在进行更新.删除时Attached的报错,注意我这里说的单个 ...
- [转]在Entity Framework中使用LINQ语句分页
本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...
- 在Entity Framework中使用事务
继续为想使用Entity Framework的朋友在前面探路,分享的东西虽然技术含量不高,但都是经过实践检验的. 在Entity Framework中使用事务很简单,将操作放在TransactionS ...
- Entity Framework中的多个库操作批量提交、事务处理
在Entity Framework 中使用SaveChanges()是很频繁的,单次修改或删除数据后调用SaveChanges()返回影响记录数. 要使用批量修改或者批量删除数据,就需要SaveCha ...
- LinqToSql和ASP.NET Entity FrameWork 中使用事务
ASP.NET Entity FrameWork中: int flag = -1; if (this.URPmanagementEntities1.Connection.State != System ...
- Lazy<T>在Entity Framework中的性能优化实践
Lazy<T>在Entity Framework中的性能优化实践(附源码) 2013-10-27 18:12 by JustRun, 328 阅读, 4 评论, 收藏, 编辑 在使用EF的 ...
- Entity framework 中Where、First、Count等查询函数使用时要注意
在.Net开发中,Entity framework是微软ORM架构的最佳官方工具.我们可以使用Lambda表达式在Entity framework中DbSet<T>类上直接做查询(比如使用 ...
随机推荐
- android如何切换皮肤
1.先定义attr文件 <?xml version="1.0" encoding="utf-8"?> <resources> <a ...
- MySQL 5.1.63 单机配置多实例(简单配置)
需求: 在一台服务器上通过源码编译安装一个版本为5.1.63版本MySQL数据库: 方案:将所有配置文件与数据等均存放在/home/zhaoshuangshuang下.在同一个MySQL中运行两个实例 ...
- Mac OS X 10.10 Yosemite PHP 5.5.14 free type support fix
通过将php将至5.4来勉强支持freetype扩展,不推荐此方法 after upgrading to new Mac OS X Yosemite, i noticed that free type ...
- 关于Javascript"数组"那点事儿
记住Javascript里没有“数组”忘掉一切吧,骚年...一切都是对象:书中还细分了下简单类型和对象类型基本类型:typeof xxx => "number"数字,&quo ...
- easy ui easyui-linkbutton 禁用、启用
<a id="btn_update_Shop" name="btn_update_Shop" class="easyui-linkbutton& ...
- 实战开发中UI资源制作标准
资源制作标准设定建议 1.所有的UI资源全部采用PNG导出 因为Unity不支持外部压缩,所以,不论是用PNG还是JPG,只要尺寸相同,资源量在引擎中都会是一样大.所以,可以大胆地采用PNG进行输出, ...
- appStore上传苹果应用程序软件发布流程(之前都是同事发,复制一份备用)
首先确定帐号是否能发布, https://developer.apple.com/account,如果你打开Provisioning Portal,然后点击DisTribution看到的是下图中那样, ...
- Telerik_2012_Q3 (已破解)全套下载链接
1.Telerik_OpenAccess_ORM_2012_3_1012_SDK.zip (暂未提供下载) 2. Telerik_OpenAccess_ORM_2012_3_1012.zip 3. T ...
- 在SpringMVC利用MockMvc进行单元测试
spring在线文档:https://docs.spring.io/spring/docs/current/javadoc-api/index.html?index-files/index-13.ht ...
- Hibernate 二级缓存 总结整理(转)
和<Hibernate 关系映射 收集.总结整理> 一样,本篇文章也是我很早之前收集.总结整理的,在此也发上来 希望对大家有用.因为是很早之前写的,不当之处请指正. 1.缓存:缓存是什么, ...