使用EF DataBase First做一个简单的MVC3报名网站

ORM(Object Relational Mapping)是面向对象语言中的一种数据访问技术,在ASP.NET中,可以通过ADO.NET Entity Framework技术来简化数据访问。在EF里,有Code First,Model First和DataBase First三种方法来实现。

百度百科关于ORM的介绍:

http://baike.baidu.com/view/197951.htm?fr=aladdin

1、就像EF DataBase First名字所表示的意义,我们首先需要把我们需要传输数据的数据库建好,后边就要通过这个数据库来生成我们在MVC程序中所需要的实体类。我使用SQL Server 2008建好的一个简单数据库如下所示:

2、接下来我们将使用Visual Studio 2010来建一个MVC3 Web应用程序

文件→新建项目→如下图:

项目建立成功之后如下:

如果不了解MVC3的基本思想,可以参考一下微软官方的一个教程,Music Store

http://musicstore.codeplex.com

3、根据数据库生成实体数据模型edmx,步骤如下:

点击确定之后就会在VS的解决资源管理器中看到Models文件夹下多了一个实体数据模型

4、生成了数据实体之后,EF的代码生成器已经生成了我们所需要的类,但是这些类比较复杂,代码比较多,我们可以使用一个简单的模板来生成一些简单的数据上下文类,如下所示:

首先在空白处点击右键,点击添加代码生成项:

(在VS2010中的模板里没有这个EF 4.x 数据上下文代码生成器,你可以在联机模板里搜索进行安装,安装之后以后就都可以用了)

之后会在解决方案资源管理器里看到多了两个类,如下:

这两个类中的代码如下:

5、接下来我们就来添加控制器和相应的视图,如下所示:

(在给控制器命名的时候,一定要在最后加上Controller,因为在MVC中有一个重要的原则就是约定大于配置,遵守这些约定可以让我们少写很多代码,因为在MVC中约定Home控制器,Index方法是默认的访问路径,我们就把新添加的控制器叫做Home,在Home控制器里添加一个Index方法,之后你还会发现我们从方法中生成的视图也是和我们的控制器和方法的名字是有关系的,控制器的名字是视图文件夹Views下的一个子文件夹,而方法对应着一个视图文件)

(要想用刚才生成的类,我们首先就要在代码最前边加上一个using 那些类的命名空间)

要在前端代码里使用那些类,要生成一下程序,按F6或者是

在Index方法里右键添加视图,添加前端代码,这些前端代码可以是纯的前端代码,也可以是使用HtmlHelper来生成,在MusicStore那个教程里有介绍

在新生成的视图代码里加上一个简单的提交表单,如下:

6、运行程序进行测试

按F5运行程序

在表单中输入数据后点击提交,到数据库里刷新之后发现新加进来一条数据

上边的例子里很多东西都没有考虑,如果要考虑数据的合法性验证和权限的限制可以参考微软音乐商店的那个例子和《精通ASP.NET MVC3框架》这本书

下边的这两个链接讲的也很详细,也可以参考一下这两个例子

参考自:

http://msdn.microsoft.com/zh-cn/data/gg685489

http://msdn.microsoft.com/en-us/data/jj206878.aspx

用EF DataBase First做一个简单的MVC3报名页面的更多相关文章

  1. 利用Django和装饰器做一个简单的修改密码页面

    view视图代码: from django.shortcuts import render,redirect from django.http import HttpResponse from PIL ...

  2. 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...

  3. 使用React并做一个简单的to-do-list

    1. 前言 说到React,我从一年之前就开始试着了解并且看了相关的入门教程,而且还买过一本<React:引领未来的用户界面开发框架 >拜读.React的轻量组件化的思想及其virtual ...

  4. 【 D3.js 入门系列 --- 3 】 做一个简单的图表!

    前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...

  5. 一起用HTML5 canvas做一个简单又骚气的粒子引擎

    前言 好吧,说是"粒子引擎"还是大言不惭而标题党了,离真正的粒子引擎还有点远.废话少说,先看demo 本文将教会你做一个简单的canvas粒子制造器(下称引擎). 世界观 这个简单 ...

  6. Jmeter初步使用二--使用jmeter做一个简单的性能测试

    经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...

  7. 【 D3.js 入门系列 — 3 】 做一个简单的图表!

    图1. 柱形图 1. 柱形图 前几章的例子,都是对文字进行处理.本章中将用 D3 做一个简单的柱形图.制作柱形图有很多种方法,比如用 HTML 的 <div> 标签,或在 SVG 上绘制 ...

  8. Windows Phone开发(21):做一个简单的绘图板

    原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...

  9. 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)

    使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Netw ...

随机推荐

  1. Why SignalR does not use WebSockets?

    Why SignalR does not use WebSockets?   As you probably know SignalR supports multiple transports. Th ...

  2. Android TextView背景颜色与背景图片设置

    Android TextView 背景颜色与背景图片设置,android textview 控件,android textview 背景, android textview 图片,android te ...

  3. 【转】我的Android笔记(十)—— ProgressDialog的简单应用,等待提示

    原文网址:http://blog.csdn.net/barryhappy/article/details/7376231 在应用中经常会用到一些费时的操作,需要用户进行等待,比如加载网页内容…… 这时 ...

  4. Delphi 调试BPL包中引用另外的BPL的方法。

    在实际程序中,遇到1.bpl 引用了2.bpl中的方法,2.bpl的方法进入后又引用了3.bpl ,刚开始挺蒙,怎么调试呢,  其实bpl就是dll, 故, 1.我在Delphi的run->pa ...

  5. System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法

    问题场景:asp.net给图片添加文字水印保存为jpg格式时出现标题所描述错误(图片为.jpg格式): 简单验证:用本机的画图程序打开,然后保存为jpg格式会出现警告框"画图程序不能存储该文 ...

  6. HDU_1239——再次调用外星智慧

    Problem Description A message from humans to extraterrestrial intelligence was sent through the Arec ...

  7. 红领:挺进高端 青岛财经日报-htmlmainVerName

    红领:挺进高端 青岛财经日报-htmlmainVerName 红领:挺进高端

  8. INTELLIJ IDEA集成CHECKSTYLE(转)

    转自:http://www.cnblogs.com/kiwi-wang/p/4166410.html 本文中使用intelliJ IDEA版本为14.0.1,其他版本差异不大,可同样安装. 下载安装C ...

  9. Thinking In Web [原创作品]

    (转载请注明:http://zhutty.cnblogs.com, 交流请加群:164858883) 可能在大部分人来讲,前端就是可见的页面数据呈现正确就行.然而这样是不正确的,页面呈现是一部分,更多 ...

  10. paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt

    paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http:// ...