标签:
首先我想大家对ASP.NET MVC+EF并不陌生,可悲的是小菜我从2012年知道他的存在直到现在才开始学习。可以说是浪费了很多时间,由于楼主一直使用ADO.NET+三层的模式,所以总觉得有自己的一番天地,同时在此呼吁还有像我一样的橙色猿或攻城师们请正视它,时代的脚步不会因为你们而停留。但最近一段时间可以说是2014年下半年,整个行情都是在使用ASP.NET MVC+EF或者其他持久层来搭建项目。大势所趋不得不正视它了。
楼主的MVC水平还停留在2.0的水平,可想而知。当时是出于项目需要而使用了它,至今对它不熟不知的水平。对应EF所谓的EntityFramework更是不知究竟是什么东东,只知是ORM的一种,这就是楼主的小白概念。可以说以很多刚学习他的小伙伴都是同一水平。不多说这些废话了,我们进入学习的大道。
首先我使用的还是VS12对应使用VS15的小伙伴可能有点出入,毕竟版本不同有些都东西还是有点出入的。
可以看到他的注释用于ASP.NET MVC4或WEB API的建设,对有个WEB API我想大家多多少少都有点了解吧,WEB API一般用做接口开发的。
我们从系统默认搭建的开始,因为我们什么都不会所以看看微软是怎么给我们初始化一个的,创建好之后大家可以看到项目很整洁下图红色部分就是MVC下的几个重要文件
大家可以点开App_Start文件看看里面装都是所谓的路由处理机制
RouteConfig,WebApiConfig认准这两个,其他的大家可以去了解下。
接着我们来看看微软给我们都引入了什么东西,大家可以打开引用看看里面都是什么东西,可以看到,引用了很多dll其中就包括EntityFramework
可以看出VS12自带的EF是4.0下的版本,然后大家打开程序包所在的路径看看是不是多了一个叫packages的文件夹,在根目录。里面就是微软推荐使用的扩展和EF所需的文件
为了清洁大家可以把Controllers文件夹下的AccountController,Filters的文件夹,View下面的Account文件夹和Models下的AccountModels都删了,然后F5编译下并打开看看,这时有些人的会报错“MySql.Web.v20”这样的错误,因为我就试用,具体的原因说是版本不对,找了一下解决方法,提议大家把系统盘下C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config文件改下,搜索下包含MySql.Web.v20字段的两个地方改成“MySql.Web”是的去掉.v20不知道这种改法是否正确,反正改后很正确使用,如有不当请大家指出。运行起来就是这样啦
至于基础和语法大家还是找点书来看看,毕竟楼主也是个小白很多都不懂,我只能介绍第一次如何搭建项目看看究竟是个什么东西。
然后在Models文件下创建实体类Film
/// <summary> /// 电影 /// </summary> public class Film { [Key] [Display(Name="编号")] public int ID { get; set; } [Display(Name="电影名称")] [Required(ErrorMessage="*")] [StringLength(200)] public string Title { get; set; } [Display(Name="点击次数")]
[RegularExpression(@"^\+?[1-9][0-9]*$",ErrorMessage="只能输入正整数,由[0-9]的数字组合必须非0开头")] public int ClickNum { get; set; } [Display(Name="创建时间")] [DataType(DataType.DateTime)] public DateTime CreatDate { get; set; } }
至于上面的属性大致给大家说说。这些属性都在一个叫System.ComponentModel.DataAnnotations的命名空间下Key想必大家都明白这是键的意思,没错是定义主键的意思,Display注释描述,Required必须验证,StringLength字段大小,DataType类型。
然后我们在项目添加个Contexts文件夹,直接并且添加一个上下文FilmEntities.cs
using System.Data.Entity; using MyMvcH.Models; namespace MyMvcH.Contexts { public class FilmEntities:DbContext { public DbSet<Film> FileContxt { get; set; } } }
好这下我们编译下项目,为了下步做铺垫。
然后这Controller文件夹右击添加控制器
如果不报错就在Controllers文件夹下生存FilmController,如下图
报错的话请查看你的EF框架是否支持当前的版本,接着我们去更改Web.config的配置文件主要是更改数据连接方式
改成自己数据库的连接方式建议是一个空的数据库,如楼主的
接着我们去View的下的Shared文件夹下的_Layout.cshtml改下链接
“主页”可以改成电影,Home着是对应你的实体名称Film,编译并再次浏览下
点击进去看看
在看看数据是否有你所需的数据库,是否已经给自动创建相关的
运行的界面
可以看出后台对字段的注释都在页面上程序出来了,新增一个看看。
现在,我突然想起实体还漏了一个重要属性,单价忘记添加了,,意思我们在实体添上单价的字段如下
[Display(Name="价格")] [RegularExpression(@"^[0-9]\d*\.?\d*[1-9]\d*$",ErrorMessage="请输入正确的价格")] public decimal Price { get; set; }
到了这大家先马住,Hold 住,Hold 住。这里先给大家介绍下,我这使用的开发模式,这个实例才用的是ASP.NET MVC4.0+EF4.0 并且是 Code First模式,也就代码现行,如果现在大家编译并运行了项目,那么会出现什么情况,没错就是之前我们新提交的那条数据会被删除,因为系统它接收了,你的实体有新的变更,所以他会直接去重新建表,这个在实际开发中是不允许的,那该怎么版,微软给出要我们Code First 迁移更新数据库。
可以通过如下步骤更新数据库,消除上述异常:
1、在项目的“程序包管理控制台"窗口,输入”enable-migrations",回车,导致在项目中生成一个“Migrations"文件夹,其中包含两个.cs类。
2、在1中生成的Configuration.cs中修改构造函数中代码为:”AutomaticMigrationsEnabled = true;“
3、保存修改后,在“程序包管理控制台"中输入”update-database",回车,再次运行即可。
通过上面的步骤就可以在保存原来数据的同时,又改变了表结构。
如上是我学习的步骤,希望能给大家有帮助,这完成是对刚入门的级别,大牛们请勿喷,有不足的请指错,毕竟小弟也才刚开始学习。
至于为什么这样编写,目测整个的园里的基本是理论,理论,再理论,对应急需想了解如何实现的小伙伴们有点那个,不是说理论不重要,只是先让他就知道他是怎么呈现的,在去深入学习!!
标签:
原文地址:http://www.cnblogs.com/jinjmei/p/5115767.html