学习《ASP.NET MVC5高级编程》——基架

基架——代码生成的模板。我姑且这么去定义它,在我学习微软向编程之前从未听说过,比如php代码,大部分情况下是我用vim去手写而成,重复使用的代码需要复制粘贴,即使后来我在使用eclipse这样的IDE书写javaee网站时候,大部分情况下也需要自己编程实现crud基本操作,这一次研究asp.net mvc时我惊奇的发现visual studio2013的强大功能:利用“基架”功能:

实践:新建好一个利用基架的Controller,见证强大的基架

第一步,新建一个MVC5项目

打开visual studio 2015,开始栏目下点击新建项目:

左边选择Visual C#下的Web,名称为“MusicStore”=》确定即可

 

接下来弹出选择MusicStore的开发类型:MVC,勾选添加单元测试。

点击确定进入项目:

第二步,新增一个music类

在资源方案管理器MusicStore下,右击Models目录=》添加=》类=》命名“MusicModel”,编辑这个C#文件代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MusicStore.Models
{
    public class MusicModel
    {
        public int Id{ get; set; }    //这一行必须,主键
        public String Name { get; set; }
        public String Album { get; set; }
        public String Artist { get; set; }
    }
}

重要:右击“MusicStore”项目,重新生成!

第三步:新建基架的Controller

右击Controllers目录,添加=》控制器:

 

选择最后一个(如图),点击添加按钮。

 

如上图修改,模型下拉选择刚才的MusicModel类,而数据上下文最好新建一个,点击右侧按钮如下:

 

命名为MusicDB=》添加=》添加

完成后会发现Views/MusicManage会多了CRUD操作的视图文件,同时在Controller中自动生成了对应的方法,运行一下代码

浏览器地址后面添加类地址:”/MusicManage/“默认会跑主页去

(在这里,如果提示数据库无法连接,请先查看web.config文件的配置信息,连接字符窜修改成当前系统中可用的数据库,我修改的是LocalDB\v11.0)

整个页面空空如也,因为没有数据,我们点击左上create new创建一条数据,可以看到对应的edit,delete,detail

说明整个crud操作都实现了,并且每一条数据都是model映射,遵从MusicModel属性

这就是强大的基架功能!

 

原理:ASP.NET MVC中的基架可以为应用程序创建,读取,更新和删除(CRUD)功能生成所需的样板代码。基架模板检测模型类的定义,然后生成控制器以及与该控制器关联的视图,有些情况下还会生成数据访问类。基架知道如何命名控制器、命名视图以及每个组件需要执行什么代码,也知道在应用程序中如何放置这些项以使应用程序正常工作。

利用基架可以为应用程序开发节约时间。基架只有在允许运行的时候才会运行,所以不必担心代码生成器会覆盖对输出文件的修改。

介绍常用的基架模板:

1.MVC5 Controller——Empty

添加一个指定控制器,自带Index,无视图生成。

2.MVC5 Controller with read/write Actions

添加一个指定控制器,自带Index,details,create,edit和delete,无视图。

3.Web API2 API Controller Scaffolders

用于Web API以后再来唠叨

4.MVC5 Controller with Views,Using Entity Framework

这个最牛逼,生成一个完整的CRUD应用。

关于这个如何使用:第一步需要为基架提供一个模型类(可以先写一个数据模型Model),基架会检查选取数据模型的所有属性,然后利用这些信息来创建控制器,视图和数据访问代码。

为了生成数据访问,还需要一个数据上下文对象的名称。可以指定一个数据上下文也可以新建一个。

 

什么是数据上下文?

要说明这个问题,必须先了解实体框架。

Entity Framework(实体框架)用于数据库关系对象映射可以明确如何把.NET对象存入数据库,以及使用LINQ语句操作数据库。

EF支持数据库优先,模型优先,以及代码优先,MVC基架采用了代码优先的机制

代码优先:在不创建数据库对象前,向sql server中存储或检索信息。

什么是数据库上下文文件,请看刚刚我们新建的MusicDB这个就是数据库上下文文件,查看vs2015为我们生成的上下文:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace MusicStore.Models
{
    public class MusicDB : DbContext
    {
        public MusicDB() : base("name=MusicDB")
        {
        }

        public System.Data.Entity.DbSet MusicModels { get; set; }
    }
}

这个MusicDB继承自DbContext实体框架

posted @ 2017-01-21 11:44  devilyouwei  阅读(503)  评论(0编辑  收藏  举报