[转]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 , 做3个Entity Framework CODE
FIEscortST的示范,希望大家能抱有协理。越发是,对你想架构小型项目标时候,这一个利用是老大有帮扶的.

试行环境:

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中添加1个类,四个是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

相关文章