• ASP .NET MVC 之Entity Framework code first


    最近,用到了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 { getset; }
            public string  Name { getset; }
            public string State { getset; }
            public Adress  Adress { getset; }
              
        }
    }
    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 { getset; }
            public DbSet<Reviewers> Reviewer { getset; }
        }
    }

    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

  • 相关阅读:
    WPF线程调用UI元素
    WPF使用阿里巴巴矢量图标图ttf
    WPF读取Excel表格数据到DataGrid
    WPF开发的软件在触摸屏当操作遇到边界时
    WPF 全局样式(滚动条)
    WPF TextBox文本自动换行
    Maven : Cannot download sources
    nginx关闭后仍然能够访问localhost:80
    微信公众号开发总结
    CAT window10 本地安装
  • 原文地址:https://www.cnblogs.com/tomin/p/MVC_EntityFramework.html
Copyright © 2020-2023  润新知