使用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. HDU-3661(贪心)

    Problem Description In a factory, there are N workers to finish two types of tasks (A and B). Each t ...

  2. sicily 无路可逃?(图的DFS)

    题意:在矩阵数组中搜索两点是否可达 解法:DFS #include<iostream> #include<memory.h> using namespace std; stru ...

  3. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAApcAAAB3CAIAAADZ1fxtAAAbFElEQVR4nO2dzbHDOo6FHY9S0WqqZt

  4. [Qt] IP地址输入框实现

    封装了一个ip地址的输入框.网络上下载了份代码,找不到哪里的了.经过修改之后,尽力让它的行为和windows的IP地址输入框的行为看起来像些.代码如下: //ipaddredit.h #ifndef ...

  5. Python进阶(面向对象编程基础)(二)

    1.初始化实例属性 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan' #定义Person类的__init__方法 ...

  6. Wi-Fi漫游的工作原理

    Wi-Fi网络的一个极其重要的特点就是移动性.例如,一个人可以在使用Wi-Fi电话进行通话或是从服务器上下载大数据量的文件时穿过一幢建筑物.用户设备内部的Wi-Fi无线电可以从一个接入点漫游至另一个接 ...

  7. 从不同层面看cocos2d-x

    一  框架层面 二  Lua层面 三  工具层面 四  android打包 一 框架层     总体来说,cocos2dX提供的一个简便的框架,包括了渲染,动画,事件分发,网络还有UI,物理引擎等几大 ...

  8. android 滚动视图(ScrollView)

    为了可以让内嵌布局管理器之中加入多个显示的组件,而且又保证程序不这么冗余,所以可以通过 Activity程序进行控制,向内嵌布局管理器中添加多个组件. ScrollView提供一个显示的容器,可以包含 ...

  9. 关于material和sharedMaterial的问题

    在unity3d中,Renderer组件有两个属性:material和sharedMaterial,它们都可以用来获取Renderer的材质属性.但是它们之间却又很大的区别,下面通过示例来讲解一下. ...

  10. 数据持久化之CoreData

    再次回归博客园, 已经实属不易了, 面临这近期忙忙碌碌的项目开发, 虽然并不是完全的没有闲暇时间, 但是怎么说呢, 也有着各种的无奈与曲折, 面临这产品需求的不断变化和页面的不断更新, 对于一个程序员 ...