Asp.Net MVC5入门学习系列⑦
接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改怎么办?
添加一个字段
我们现在要给Movie实体模型类添加一个评价的字段该怎么搞!我们知道我们默认使用EF code frist生存的数据库是同步性的,这样才能便于我们更好的开发,如果实体模型和数据库不同步的话,实体框架应该会抛出异常。
code frisr设置模型库迁移
在VS里我们先移除dataBase,具体操作如下:
删除EF连接,为了是我们的应用程序不出错,我们需要做一下事情,具体操作如下:
完了在控制台窗体输入一下内容:
运行完控制台的命令后我的项目结构变化如下:
多了一个数据迁移的Migrations文件夹,这个文件夹就是code frist迁移生产的,里面有一个历史记录的类还有一个配置信息类。我们打开Configuration.cs类,其面貌如下:
我们对Configuration.cs类的Seed方法进行从新构造,修改代码如下:
接下的事情就是我们需要创建一个迁移DbMigration类,该类负责创建一个database,前面我们不是删除了EF创建的database么。接下来我们在控制台窗体输入下面的命令,具体操作如下:
这个命令就是新构建database并对其进行初始化动作。动作执行完成后你会发现,VS会自动生成一个这个文件,具体如下:
可以看到这个类里面有2个方法,就代码直观上解释的话这个类在运行时的话有一个是在降级过程中执行的操作,另外一个则是在升级过程中的操作。生产的这个类包含创建数据库的模式代码,接下来的事情呢!就是这么把这个数据库创建出来,并且把我们刚才加的测试数据给添加到数据库中,接下来我们继续在控制台窗体操作,具操作如下:
待命令跑完之后我们来运气我们的应用程序看下效果,跑起来我们的程序看我们刚才添加的数据是否能正常显示:
怎么样,效果达到了吧!关于迁移这里可能有很多描述不是很清楚的地方,所以还请各位前辈朋友多多指教。
现在进入正题如果我给Model实体类添加一个字段的话怎么办,比如我给Movie类添加了下面的字段,如下:
添加一个这个属性后,你会立马想到那是不是所有的页面都要去加这个东西,还有Controller里面Action上带Bind[Inculd(xxx,xxx,xxx,xx)]这些地方是不是都要去加这个东西呢,具体修改的地方如下:
Index.cshtml页面:
Create.cshtml修改如下:
我们现在就直接先把程序运行起来看看会出现什么问题:
来个一个大黄页,为什么呢!因为我们在代码迁移数据的时候没有给我们刚才新加的字段所以程序在这里不认识了,所以就出错了,那改呗,哪里出错就改哪里!我们修改Cofiguration类里的Seed方法如下:
修改完这个说还会出错吗?答案是肯定会的,为什么呢!是的我这里是添加了Model的新字段过来,但是数据库里有没有这个字段呢?我们先一步一步走着看,按照常规思维这里是应该先给数据库添加这么一个字段,那么我们用控制台添加该字段,具体操作如下:
当我们执行完这个命令的话,就会在模型快照中添加上这么一个字段同时执行完这个的时候VS也会生出这么一段代码,如下:
然后我们需要在控制台在更新一下datebase,具体操作如下:
更新完后,我们在运行我们的程序看看效果:
然后我们修改(哦,修改页面也需要把Rating这个字段也加上)一个Rating为空的数据,看下效果:
使用这种方式添加字段就必须要改所有用到这些字段的页面手动添加上对应的代码,如上面在index/create/edit/delete.cshtml页面上添加代码。关于这篇的分享的东西就先介绍到这里,通过修改实体模型我们可以看到实体模型怎么和数据库进行同步,这边文章时间有些紧张有些地方可能描述的不是很清楚,还请各位朋友见谅及指导,哪里有不对的地方,还望指导我会第一时间去改正,这篇的话就先到这里吧!
Asp.Net MVC5入门学习系列⑦的更多相关文章
- Asp.Net MVC5入门学习系列③
原文:Asp.Net MVC5入门学习系列③ 添加一个视图(View) 接着上篇的入门系列,上面解说添加一个简单Controller(控制器),这里我们简单的在来添加一个View(视图)来展示我们Co ...
- Asp.Net MVC5入门学习系列②
原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...
- Asp.Net MVC5入门学习系列①
原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...
- Asp.Net MVC5入门学习系列⑤
原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的 ...
- Asp.Net MVC5入门学习系列⑥
原文:Asp.Net MVC5入门学习系列⑥ 接着上次的篇幅,我们这篇手动来写一个查询的流程代码! 搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去 ...
- Asp.Net MVC5入门学习系列④
原文:Asp.Net MVC5入门学习系列④ 添加Model且简单的使用EF 对于EF(EntityFramework)不了解的朋友可以去百度文科或者在园子里搜一些简资源看下,假如和我一样知道EF的概 ...
- Asp.Net MVC5入门学习
添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用来便于我们的开发,要是对MVC概念还有点模糊的 ...
- MVC5入门学习系列④
添加Model且简单的使用EF 对于EF(EntityFramework)不了解的朋友可以去百度文科或者在园子里搜一些简资源看下,假如和我一样知道EF的概念,那么就知道EF有一个code first的 ...
- Bootstrap3.0入门学习系列
Bootstrap3.0入门学习系列规划[持续更新] 前言 首先在此多谢博友们在前几篇博文当中给与的支持和鼓励,以及在回复中提出的问题.意见和看法. 在此先声明一下,之前在下小菜所有的随笔文章中, ...
随机推荐
- RH133读书笔记(6) - Lab 6 Adding New Filesystems to the Filesystem Tree
Lab 6 Adding New Filesystems to the Filesystem Tree Goal: Develop skills and knowlege related to par ...
- mysql数据文件迁移到新的硬盘分区的方法
该系统增加了一个硬盘.要创建新的分区/data文件夹,mysql对于数据文件夹/var/lib/mysql 1. 停止mysql维修 [root@localhost~]# service mysql ...
- executeBatch()相关操作汇总
环境:oracle使用PreparedStatement的executeBatch方法,如果DML操作成功,返回值[-2,-2,...]an array of update counts contai ...
- 于SharePoint经营SharePoint Designer建立
于SharePoint经营SharePoint Designer建立 SharePoint Designer 2010(SPD)它是一种强大的工具,帮助建立一个高速解决方案. 通过连接到现场,能够自由 ...
- [课程分享]IT软件项目管理(企业项目甘特如是评价、维护管理、文档管理、风险管理、人力资源管理)
[课程分享]IT件项目管理(企业项目甘特图案例评价.维护管理.文档管理.风险管理.人力资源管理) 对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 课程讲师:丁冬博士 课程分类:Jav ...
- Team Services and Team Foundation Server官方资料入口
Team Foundation Server msdn 中文文档入口 Team Services or Team Foundation Server www.visualstudio.com 英文文档 ...
- jQuery.reveal弹出层
jQuery.reveal弹出层使用 最近用到弹出层,还得自定义UI,原本用的artDialog太庞大,不合适了,于是就找到了这个东西,又小又好用,基础的弹出遮罩都有了,想要什么还不是Coder自己说 ...
- Spring3+SpingMVC+Hibernate4全注解环境配置
Spring3+SpingMVC+Hibernate4全注解环境配置 我没有使用maven,直接使用Eclipse创建动态Web项目,jar包复制在了lib下.这样做导致我马上概述的项目既依赖Ecli ...
- CSS3实现Tooltip提示框飞入飞出动画
原文:CSS3实现Tooltip提示框飞入飞出动画 我们见过很多利用背景图片制作的Tooltip提示框,但是缺点是扩展比较麻烦,要经常改动图片.还有就是利用多层CSS的叠加实现,但是效果比较生硬,外观 ...
- Git客户端(Windows系统)的使用(Putty)(转)
本文环境: 操作系统:Windows XP SP3 Git客户端:TortoiseGit-1.8.14.0-32bit 一.安装Git客户端 全部安装均采用默认! 1. 安装支撑软件 msysgit: ...