[转]ASP .NET MVC 之Entity Framework- code first
本文转自:http://www.cnblogs.com/tomin/archive/2012/02/29/MVC_EntityFramework.html
最近,用到了ASP.NET MVC Entity Framework 开发了一些项目,感觉还是非常好用了,这让我见证了微软技术的发展:
-通过这个图,我们很清晰的看到,数据访问方式的改变。
如果,你想了解,ADO.NET Entity Framework, 你可以直接访问这个网站 Entity Framework
如果,你想了解ASP.NET MVC , 你可以直接访问这个网站:MVC
下面我介绍一下Entity Framework 的一些运用:
在园子里,我看到很多关于MVC的讲解,很多的用到的是Model First, or Schema First . 在这里,我将结合ASP.NET MVC 3.0 , 做一个Entity Framework CODE FIRST的演示,希望大家能有所帮助。特别是,对你想架构小型项目的时候,这个运用是非常有帮助的.
实验环境:
OS: Windows Server 2008R2, Windows 7
DE: VS2010 + MVC 3.0+Entity Framework+ SQL Server 2008 R2
一、创建MVC 3.0的网站项目,这和大家创建其他的MVC项目是一样的。注意:在创建之前,记得先安装MVC 3.0, Entity Framework. 创建完之后,你将会看到经典的MVC 模式,Model->View->Control
二、在Model中添加2个类,一个是Restaurant,一个是OdeToFoodDB, 定义如下:
Restaurant using System; using System.Collections.Generic; using System.Linq; using System.Web;
namespace MVCET.Models { public class Restaurant { public int ID { get; set; } public string Name { get; set; } public string State { get; set; } public Adress Adress { get; set; } } }
OdeToFoodDB using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity;
namespace MVCET.Models { public class OdeToFoodDB:DbContext { public DbSet<Restaurant> Restaurants { get; set; } public DbSet<Reviewers> Reviewer { get; set; } } }
OdeToFoodDB, 注意这个类必须继承 DbContext
然后,在webConfig中添加一个数据库连接字符串,如下:
<configuration> <connectionStrings> <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> <add name="OdeToFoodDB" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;initial catalog=OdeToFoodDB;" providerName="System.Data.SqlClient"/>
</connectionStrings>
三、在Control 中添加RestaurantControl 类,再为Index()函数添加View. 并且选择强类型去显示数据。这时候,view 会自动绑上数据,显示数据。这时候,肯定没有数据,如果要有数据怎么弄呢?这时候就到根据代码生成数据库。 四、在VS 中选择服务器浏览器窗口,在数据库的节点上选择"Add Connection …." 中文版的就是“添加新的连接”。写上数据库的服务器名称,在填上数据库的名字,如下图所示:
点击ok,然后创建数据库,如果,有对话框弹出来,选择"Yes" 就行了。这时候,系统就会自动生成数据库了,如下图所示
我们,看到Restaurants 表中的字段和我们定义的Restaurant中字段的名字基本类似的 到现在为止,我们已经根据代码结构生成了数据库.但是,如果Restaurant 中的字段有所改变,怎办办呢?这时候,就要到Drop以前的数据库,然后,重现建立数据库 五、类发生了改变,数据库也发生对应的改变: 在Global.asax 中的 Application_Start() 函数中,添加以下的代码
protected void Application_Start() { // Database.SetInitializer(new DropCreateDatabaseIfModelChanges<OdeToFoodDB>()); Database.SetInitializer(new OdeToFoodDBInitializer()); AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); }
你也可以写一个类继承DropCreateDatabaseIfModelChanges<OdeToFoodDB>, 如下代码所示,你就可以不用注释的哪一行代码了
OdeToFoodDBInitializer public class OdeToFoodDBInitializer : DropCreateDatabaseIfModelChanges<OdeToFoodDB> { protected override void Seed(OdeToFoodDB context) { base.Seed(context);
context.Restaurants.Add( new Restaurant() { Name = "qitian", Adress = new Adress() { Street = " Nanjiang RD, MD", City = "Shanghai" } });
context.Restaurants.Add( new Restaurant() { Name = "haiyun", Adress = new Adress() { Street = " Dongchuan RD, MD", City = "Shanghai" } }); context.Restaurants.Add( new Restaurant() { Name = "qitian", Adress = new Adress() { Street = " Beijing RD, HF", City = "Guangdong" } });
context.Restaurants.Add( new Restaurant() { Name = "Lantian", Adress = new Adress() { Street = " Wuhan RD, HF", City = "Guangdong" } });
context.Reviewer.Add(new Reviewers() { Name="Tomin", Sex="Female"}); context.Reviewer.Add(new Reviewers() { Name = "Tony", Sex = "Male" });
context.SaveChanges(); } }
重新运行运用程序,会给你一个意想不到的结果,你会惊呆的。
[转]ASP .NET MVC 之Entity Framework- code first的更多相关文章
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航
ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...
- 使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)
在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数. 这里介绍一下如何给Asp.net MVC ...
- Using the Repository Pattern with ASP.NET MVC and Entity Framework
原文:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-and ...
- [转]Using the Repository Pattern with ASP.NET MVC and Entity Framework
本文转自:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-a ...
- ASP.NET MVC+EasyUI+Entity FrameWork 整合开发
本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type=.mi ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)
在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...
- MVC使用Entity Framework Code First,用漂亮表格显示1对多关系
部门和职员是1对多关系.用一个表格列出所有部门,并且在每行显示该部门下的所有职员名称.如下: 部门和职员的Model: using System.Collections.Generic; namesp ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第四章:更高级的数据管理
在这一章我们将学习如何正确地删除分类信息,如何向数据库填充种子数据,如何使用Code First Migrations基于代码更改来更新数据库,然后学习如何执行带有自定义错误消息的验证. 注意:如果你 ...
随机推荐
- HDU 5876 补图 单源 最短路
---恢复内容开始--- Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (J ...
- NOIP 2010 乌龟棋
P1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行 NN 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第 NN 格是终点, ...
- operamasks-omGrid的使用
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="personTab.aspx ...
- MyBatis实体属性与表的字段不对应的解决方案
1.通过在查询的SQL语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上,这种方式是通过在SQL语句中定义别名来解决字段名和属性名的映射关系的. ...
- Cisco网络设备命名规则
1. CISCO 开头的产品都是路由器:2. RSP 开头的都是CISCO7500 系列产品的引擎:3. VIP 开头的产品都是CISCO 7500系列产品的多功能接口处理器模块:4. PA 开头 ...
- dstat用法;利用awk求dstat所有列每列的和;linux系统监控
安装:yum install -y dstat dstat命令是一个用来替换vmstat.iostat.netstat.nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具.与sys ...
- day4-hdfs的核心工作原理\写数据流程 \读数据流程
namenode元数据管理要点 1.什么是元数据? hdfs的目录结构及每一个文件的块信息(块的id,块的副本数量,块的存放位置<datanode>) 2.元数据由谁负责管理? namen ...
- yarn-cli 添加
添加依赖包 当你想使用另一个包时,你要先把它添加到依赖列表中.也就是执行 yarn add [package-name] 命令将它安装到你的项目中. 这也将同时更新你的 package.json 和 ...
- Wps 2013 拼音标注两种方式分析
Wps 2013 拼音标注两种方式分析 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...
- 【OI】关于快速幂的简单理解
都知道算某个数的幂需要线性的复杂度,为了优化复杂度,就出现了所谓的快速幂. 快速幂的代码很短,但是要原理需要一点心思. 首先,我们知道, a^b = a^c * a^d (c+d=b) 那么,不就可以 ...