本文转自: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();                          }     }

重新运行运用程序,会给你一个意想不到的结果,你会惊呆的。

MVCET.zip

[转]ASP .NET MVC 之Entity Framework- code first的更多相关文章

  1. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  2. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航

    ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...

  3. 使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)

    在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数. 这里介绍一下如何给Asp.net MVC ...

  4. 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 ...

  5. [转]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 ...

  6. ASP.NET MVC+EasyUI+Entity FrameWork 整合开发

    本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type=.mi ...

  7. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)

    在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...

  8. MVC使用Entity Framework Code First,用漂亮表格显示1对多关系

    部门和职员是1对多关系.用一个表格列出所有部门,并且在每行显示该部门下的所有职员名称.如下: 部门和职员的Model: using System.Collections.Generic; namesp ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  10. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第四章:更高级的数据管理

    在这一章我们将学习如何正确地删除分类信息,如何向数据库填充种子数据,如何使用Code First Migrations基于代码更改来更新数据库,然后学习如何执行带有自定义错误消息的验证. 注意:如果你 ...

随机推荐

  1. nyoj_205_求余数_201404271630

    求余数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数   输入 第一 ...

  2. SOJ 2800_三角形

    真的是O不是0[看了discuss才发现.....一个大写的蠢 [题意]多个黑白三角形组成的倒三角,求白三角形组成的最大倒三角的面积 [分析]由于问的是倒三角个数,所以只需看与行数奇偶性相同的白色倒三 ...

  3. 洛谷 P1404 平均数

    P1404 平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来n ...

  4. 携程Apollo(阿波罗)配置中心把现有项目的配置文件迁移到Apollo

    说明: 1.这个示例应该算是一个静态迁移,也就是说配置更新后要重启应用才能体现更新,目的是展示现有配置的如何迁移. 2.如果要实现更新配置后动态去更新而不重启应用的操作,比如ZK地址和数据库地址这些, ...

  5. Maven具体解释之仓库------本地仓库、远程仓库

    在Maven中,不论什么一个依赖.插件或者项目构建的输出.都能够称之为构件. Maven在某个统一的位置存储全部项目的共享的构件.这个统一的位置.我们就称之为仓库.(仓库就是存放依赖和插件的地方) 不 ...

  6. react jsx 常见问题

    问题一: Expected to return a value in arrow function 解决方案: 修改后: // 使用 store return ( <div> <h1 ...

  7. phpmywind教程:关于日期函数调用整理

    近期群里一直在问phpmywind的日期函数怎么调用,今天抽出时间给大家整理出来. 以月/日格式显示: <?php echo MyDate('m-d', $row['posttime']); ? ...

  8. 实战c++中的vector系列--vector的一些异常

    今天就写一写vector的一些异常.能够捕捉的异常. out_of_range 相当于数组的越界了.vector会自己主动增大容量,可是假设索引超出了当前的size.就会引发异常. #include& ...

  9. salt-stack "No Top file or external nodes data matches found"解决

    salt-stack在配置分组时提示如下信息: No Top file or external nodes data matches found 后来在官网上找到如下提示,意思是需要重启master服 ...

  10. Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决

    Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi  最近用E ...