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入门学习系列规划[持续更新] 前言 首先在此多谢博友们在前几篇博文当中给与的支持和鼓励,以及在回复中提出的问题.意见和看法. 在此先声明一下,之前在下小菜所有的随笔文章中, ...
随机推荐
- C++ STL简化了编程
图1.STL和c++标准模板库 作为C++标准必不可少的一部分,STL应该是渗透在C++程序的角角落落里的. STL不是实验室里的宠儿.也不是程序猿桌上的摆设.她的激动人心并不是昙花一现.本教程旨在 ...
- StackExchange.Redis Client
StackExchange.Redis Client 这期我们来看StackExchange.Redis,这是redis 的.net客户端之一.Redis是一个开源的内存数据存储,可以用来做数据库,缓 ...
- 2014.06.14 GlusterFS技术交流视频
6月14线下GlusterFS视频交流.高清视频是非常好的,我初听言论方面,谈到迅速,似乎不是很清楚,讲座结束后速度需要改进.谢谢能力的天空AbleSky高大内设,谢谢学生参加. 在线公开课:http ...
- Unity GUI选择与评价
因为Unity内建的GUI不管是不是从开发效率或效率强制,因此,许多派生GUI插入,什么插件的选择,是一个非常值它被认为是. 既然是评价,就会有非常多的主观意识,这不一定成为选择的根据. 再比方.我已 ...
- gtest简短,简单易用
gtest它是一种跨平台的(Liunx.Mac OS X.Windows.Cygwin.Windows CE and Symbian)的C++测试框架.有google该公司宣布. gtest台上为编写 ...
- iOS第三方库
热门iOS第三方库:看完,还敢自称”精通iOS开发”吗? 综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? h ...
- 记录我第一次在Android开发图像处理算法的经历
大概是四月底的时候.有人加我QQ问我是否做能做一些基于图像皮肤检測的算法, 主要是实现对皮肤六项指标: 1. 水分 2. 有份 3. 痤疮与痘痘 4. 色斑与肤 ...
- Android定调的发展
首先,介绍一下Android系统支持的铃声格式. 有下面几种: 64赫兹Midi,AAC.AAC+.AMR.WAV.MP3.Real Audio.WMA.OGG等格式. 将音频文件设置成铃声非常eas ...
- 【翻译】在Ext JS 5应用程序中怎样使用路由
原文:How to Use Routing in Your Ext JS 5 Apps 简单介绍 Ext JS 5是一个重要的公布版本号,它提供了很多新特性来创建丰富的.企业级的Web应用程序.MVV ...
- 好记性不如烂笔头85-spring3学习(6)-BeanFactory 于bean生命周期
假设BeanFactory为了产生.管理Bean, 一个Bean从成立到毁灭.它会经过几个阶段运行. 据我所知,一般bean包括在生命周期:设定,初始化,使用阶段,四个核心阶段销毁. 1.@Bean的 ...