Asp.net MVC 简单入门

年前一直想写个系列教程来完整的过一下Asp.NET
MVC,同时也可以帮助一些人来避免我在工作中遇到的坑,碰过的壁。缘于能力有限,时间也不充足,一直也没有能实现,幸好看到 Marla Sukesh
写了个7天教程,讲的挺好,就想顺便翻译过来給各位,为了不草率的应付,我会把原作者的某些实际操作截图替换成个人操作的截图,英文水平有限,请各位多多包涵。

菜鸟,请主动动手,不要眼高手低,不段动手才会发现问题。

大神,请留下宝贵的看法。

有问题或建议尽管提。

今天先简单用”Code First”的模式基于 EF5, MVC4 和 MVC
Scaffolding(脚手架->通过Nuget安装)创建一个简单的图书管理系统来热身, 数据库我们就选择微软自家的SQL
Server2012了:

环境如下: Win7 with sp1 and VS2012

步骤1:创建一个以Razor为引擎的互联网应用程序:

步骤2:安装EntityFramework

安装EntityFramework:

PM> Install-Package EntityFramework

安装MvcScaffolding

PM> Install-Package MvcScaffoldingAttempting to resolve dependency ‘T4Scaffolding‘.Attempting to resolve dependency ‘T4Scaffolding.Core‘.Attempting to resolve dependency ‘EntityFramework‘.Installing ‘T4Scaffolding.Core 1.0.0‘.Successfully installed ‘T4Scaffolding.Core 1.0.0‘.Installing ‘T4Scaffolding 1.0.8‘.Successfully installed ‘T4Scaffolding 1.0.8‘.Installing ‘MvcScaffolding 1.0.9‘.Successfully installed ‘MvcScaffolding 1.0.9‘.

既然是code first,那么下来自然就是要来创建Models了:

在Models的文件夹中创建三个实体类:

/// <summary>
/// Book Entity
/// </summary>
public class Book
{
    [Key]
    public int ID { get; set; }
    public string BookName { get; set; }
    /// <summary>
    /// One to One
    /// </summary>
    public int PublisherID { get; set; }
    [ForeignKey("PublisherID")]
    public virtual Publisher Publisher { get; set; }
    /// <summary>
    /// One to Many
    /// </summary>
    public virtual ICollection<Author> Authors { get; set; }
}
/// <summary>
/// Author Entity
/// </summary>
public class Author
{
    [Key]
    public int ID { get; set; }
    public string AuthorName { get; set; }
    public int BookID { get; set; }
}
/// <summary>
/// Publisher Entity
/// </summary>
public class Publisher
{
    [Key]
    public int ID { get; set; }
    public string PublisherName { get; set; }
}

建三个实体类对应的Mvc View---空View就好.

然后打开Package Manager Console, 运行下面的命令:

PM> Scaffold Controller Book
PM> Scaffold Controller Author
PM> Scaffold Controller Publisher

如果要通过Repository访问数据那么要在最后加上一个参数:–Repository

像:

PM> Scaffold Controller Book –Repository

如果要重新生成对应的view和Controller那么再加一个参数:-Force

像:

PM> Scaffold Controller Book –Repository –Force

然后你会得到的结果如下:

神奇吧,自动就帮你生成了通用部分的View,与数据库交互的Repository,
Controller以及比较重要的FirstMouseContext,省心省力。FirstMouseContext

我们来配置下让自动创建的东西,显示出来,编辑Shared/_Layout.cshtml,添加一个链接进去,这样好导航到我们view里, 如:

<li>@Html.ActionLink("Books", "Index", "Books")</li>
<li>@Html.ActionLink("Authors", "Index", "Authors")</li>
<li>@Html.ActionLink("Publishers", "Index",  "Publishers")</li>

得到了下面的错误信息:

我们修改外键为可空,重新跑一次:

PM> Scaffold Controller Book -Repository -Force
PM> Scaffold Controller Author -Repository -Force
PM> Scaffold Controller Publisher -Repository –Force

运行起来,又错了:

明显的忘记配置数据库信息了,找到配置文件Web.config

<add name="DefaultConnection" connectionString="….”>

修改为:

<add name="FirstMouseContext" connectionString="….”>

再次启动,正常了:

还有一点儿要捎带注意的是 DbContext:

public class FirstMouseContext : DbContext
{
    // You can add custom code to this file. Changes will not be  overwritten.
    //
    // If you want Entity Framework to drop and regenerate your database
    // automatically whenever you change your model schema, add the  following
    // code to the Application_Start method in your Global.asax file.
    // Note: this will destroy and re-create your database with every model  change.
    //
    // System.Data.Entity.Database.SetInitializer(new  System.Data.Entity.DropCreateDatabaseIfModelChanges<FirstMouse.Models.FirstMouseContext>());
    public DbSet<FirstMouse.Models.Book> Books { get; set; }
    public DbSet<FirstMouse.Models.Author> Authors { get; set; }
    public DbSet<FirstMouse.Models.Publisher> Publishers { get; set;  }
}

看到解释了吧?大概意思是说,如果你的Model的Schema有变化的时侯,如果想要重新生成数据库,那么就应该把下面的一句加在Global.asax文件里:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();
        System.Data.Entity.Database.SetInitializer(new  System.Data.Entity.DropCreateDatabaseIfModelChanges<FirstMouse.Models.FirstMouseContext>());
    }
}

实际上你也可以放在构造函数里:

public FirstMouseContext()
{
    System.Data.Entity.Database.SetInitializer(new  System.Data.Entity.DropCreateDatabaseIfModelChanges<FirstMouse.Models.FirstMouseContext>());
}

很好很强大吧?准备好精力迎接下周的密集知识点儿轰炸吧…

时间: 2024-10-12 09:14:39

Asp.net MVC 简单入门的相关文章

Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

出处:http://www.cnblogs.com/SeeYouBug/p/6401737.html 一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数据的操作的一个封转.可以分为视图模型(view model)和领域模型(domain models),视图模型就是在视图与控制器之间传输数据的一个封转,而领域模型就是业务逻辑,后台数据模型等的一个集

[MVC.NET] Asp.Net MVC3 简单入门第一季

转自:http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html 初识Asp.Net MVC2.0 初识Asp.Net MVC2.0[续] Asp.Net MVC2.0 Url 路由入门---实例篇 Asp.Net MVC2.0 Url 路由入门 Asp.Net MVC3 简单入门第一季(一)环境准备 Asp.Net MVC3 简单入门第一季(二)详解Asp.Net MVC3项目 Asp.Net MVC3 简单入门第一季(三

ASP.NET MVC 5 入门教程 (4) View和ViewBag

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-view.html 上一节:ASP.NET MVC 5 入门教程 (3) 路由Route 源码下载:点我下载 View(视图)用来显示被controller处理好的数据.本节我们就来看看如何通过controller访问一个View页面,如何从controller向View传值. 打开Controllers文件夹下的FirstController.cs,我们把其

【转】Asp.Net MVC3 简单入门详解过滤器Filter

原文地址:http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码,那我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的AOP了. 在Asp.net Mvc

【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

[第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 表单身份验证(Forms Authentication

【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 数据库连接字符串 上一篇文章中,我们使用MVC的

【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

目录 [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 新建项目 打开VS2015,找到菜单项[文件->新建->项目],打开向导对话框: 注意我们的选择项: 1.     运行平台:.NET FrameWork 4.5 2.     项目模板:ASP.NET W

Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接受这是我一直努力的方向.后面会有稍微复杂点的项目!让我们一起期待吧! 此文我将跟大家介绍一下Asp.Net MVC3 Filter的一些用法.你会了解和学习到全局Fileter,Action Filter等常用用法. 第一节:Filter知识储备 项目大一点总会有相关的AOP面向切面的组件,而MVC

【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 完善数据注解 到目前为止的表格页面效果: 我们需