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>类上直接做查询(比如使用 ...
随机推荐
- seo 优化 仅针对 来拍呀www.laipaiya.com(一)
加入百度统计代码:http://tongji.baidu.com/ 查看百度统计优化分析->seo建议 对每个页面的meta标签做修改 首页 title :来拍呀 - | 折扣好房你就来拍呀 k ...
- 转载 @html.ActionLink的几种参数格式
一 Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法, ...
- 如何在windows下安装GIT
如何在windows下安装GIT 分步阅读 Git是一个免费的.开源的版本控制软件.在Windows上安装git,一般为msysgit,官方下载地址为 http://code.google.com/p ...
- UILabel 根据内容的多少来计算label的frame
self.label.text = @"...."; 计算 frame 的最新方法 //1.设置lable最大显示行数 self.label.numberOfLines = 0; ...
- Shiro 缓存失效以后的一个问题
shiro 1.2.2和1.2.3 为shiro设置了缓存,但是当服务器运行几个小时后,页面判断 <shiro:hasPermission name="admin"> ...
- Maven 执行Javadoc时控制台输出乱码问题
1.0 Maven 执行Javadoc时控制台输出乱码问题 问题描述 最近项目中使用maven-javadoc-plugin生成javadoc时,myEclipse控制台乱码. 插件配置 问题分析 ...
- springMVC上传图片
http://blog.csdn.net/cheung1021/article/details/7084673/ http://toutiao.com/a6293854906445021442/ 工程 ...
- SDK更新问题解决
更新C:\WINDOWS\system32\drivers\etc\host文件百试不爽 第一步 打开SDK Manager下Tools->Options,选中“Force https://… ...
- unity3d与eclipse集成开发android应用
原地址:http://blog.csdn.net/armoonwei/article/details/7032537 Unity as a Library Once you have eclipse ...
- ICMP and InetAddress.isReachable()
In Java it is only possible to work with two types of sockets: stream based ones (or TCP ones - java ...