MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定

在这一节,我们使用VS2010自带的EF4.0来实现MVC的增删查改功能,为什么用EF呢?因为如果你自己手写sqlhelper之类,或者是用动软,和我们用EF的速度比,太慢太慢··· 当然,新手还是用sqlhelper写代码好一些,等你熟练了ado.net就不用sqlhelper,可以用用动软之类的,帮你免掉繁琐的增删改查,更灵活一些,则可以使用 EF和NH之类的ORM框架了···废话完毕

第一部分:创建 ADO.NET实体数据模型,创建数据库和表

新建一个空的MVC2空项目,然后在Model层添加一个EF模型,选择空模型

image

在出来的edmx模型里面的空白地方,我们右键创建实体,也就是以后数据库对应的一个表

image

image

继续添加 2个标量属性 (在edmx模型里面,我们把表的列叫做 标量属性,把表的外键叫做 导航属性)

image

然后选中空白地方,选择 根据模型生成数据库

image

接下来就是VS根据你刚才生成的EF模型来去数据库建表了

image

image

image

image

此时只是生成了sql 的代码,数据的表还没有建立,我们在sql上  点击执行

image

image  

OK  数据库搞定,我们去数据库看看,库和表 都OK了。我们手动插入几条数据,以便后面测试

image image

 

第二部分:在MVC中使用EF来实现增删改查。

1:首先还是创建一个控制器,有了控制器,我们才能在网址里面访问不是?

来一个  Admin控制器,勾选 为 Create,Update,Delete和Details方案··

image

这样,系统就默认帮我们创建了 增删改查的 Action。很智能吧?什么?太智能?想自己手写?···无语··那你用vb语言的asp去,那个什么都手写···爽死你·· 作为一个从asp转为asp.net的程序员,你再和我讲要自己手写,我去拿刀···

image

我们分析一下上面自动生成的几个Action  由于截图的大小问题,上面只列出来了  部分几个而已,简单的说,就是帮你把常用的增删改查这4种方式对应的Action都自动生成了

2: 实现 Index 列表

下面我们一个一个来实现,其实感觉就是在贴截图,贴代码了,改天我录个视频教程吧,有兴趣的朋友可以跟着看看详细的操作步骤

首先我们解决Index这个Action  ,既然我们是要在视图上显示的,而Action是用来给视图传值的,那么我们首先搞定Action里面的数据。之前我是用List来模拟了一下,这次我们用EF来直接返回数据库里面的数据。 先去找一下EF这个上下文

image

这个EF上下文就相当于是数据库的总管,从里面可以拿到所有的东西,下面3行,就是获得 Admin表的所有数据,只要3行···

image

有了数据,然后我们还要找个前台视图来实现吧?开工,在Index里面的 View上右键添加视图,选择强类型,选择我们在EF里面的表实体 Admin,如果这里什么都没有,我们需要先生成一下项目,因为这里是根据项目的程序集反射出来的,所以要先生成项目

image

然后我们再次生成一下项目,看看 http://XX/Admin/index  数据就出来了吧

image 

接下来,我们看看这个index视图,里面有些什么

image

我写到这里的时候,发现感觉用截图的方式写这个教程,会很累,大家看的也很累,我截图写的也很累···就如同我以前从asp转asp.net一样,如果连最基本的三层架构怎么在VS里面搭配都不会的话,怎么能开始写.net代码?如果连基本的MVC操作都不会,只靠截图,我觉得很难学会,还是去看视频教程吧。有兴趣的朋友可以加入视频群  217087477

3:实现Create 添加操作

image

image

生成项目,查看 http://xx/Admin/Create

image

这里如果我们点击页面的Create,他会提交到一个对应的Action,默认如果你在视图里面没有写表单的Action的话,他会提交到自己

image

那么这个页面提交到的Action(注意在mvc里面所有的操作都是对应控制器下的Action而不再是asp.net那样的页面)是自己本身,那么我们在Action里面怎么接收到值呢?我们去看Admin控制器

image 

我们修改一下 Create 这个 action,保存一下前台视图提交的值 也只要3行代码就OK了  用EF 很爽··

image

我们试试,生成项目,去刚才的添加页面,添加数据试试,打个断点,看看传过来的数据,请记得,我们在EF实体中是设置过ID为主键的,那么他实际是自增的,那么我们传递过来的ID有没有用呢?

image   我们提交,可以看到ID的值111确实提交过去了,但是数据库会保存么?

image

image    这样添加数据就保存OK了

 

4:实现 Edit 编辑页面,要注意,这个Action也是有2个的,为嘛呢?一个是get方式用于显示的,一个是Post再次修改提交的

image

先写Get方式的Action代码的,也就3行搞定

image

然后我们创建对应的前台View视图

image

重新生成项目,我们去前台看看 http://localhost:2180/admin  先进入列表,然后我们看看能否点修改

image

image

显示是OK的,但是ID我们是不希望给别人修改的,怎么来弄呢?我们修改前台的视图,把ID的显示删掉

image

另外我们先把Post方式的 保存的Action给完成

image

这样修改保存 也就OK了

5:最后实现 Delete 删除。系统自动创建的删除比较傻,他是先展示了数据,然后再删除,我们这里演示的时候还是按照系统创建的来删除(实际项目中,前台给一个js的confirm提示,用MVC的ajax提交到对应的Action删除完事)

image

其实这2个用的是一个视图,我们添加一下

image

然后我们还是从列表页查看页面,点击删除试试

image

image

在删除的时候,我们打个断点看看

image

实际传过来的实体也好,参数Id也好,他们的值都是相同的,而且实体里面其他的值都是null,这是因为这里是删除操作,其他的要不要无所谓

6:最后一个 Details  详细页显示 

image

image

我们显示看看

image image

 

OK  第三节  在MVC使用EF进行增删改查完毕 另外如果有人看截图太累看不懂 欢迎进  .net视频群  217087477

posted @ 2013-05-29 13:29  梨花驿路  阅读(4327)  评论(3编辑  收藏  举报