结合EF5.0讲MVC4(一)--创建一个MVC4应用程序

本章导航

1、创建一个MVC4应用程序

2、MVC4中的一些变化

3、T4模板

4、使用EF CODE FIRST修改应用程序

 

进入目录  下载源码  下载视频

一、创建一个MVC4应用程序

首先打开VS2012,选择【新建项目】弹出新建项目对话框,选择【ASP.NET MVC4 WEB 应用程序】。如图:

修改名称为我们想要的名称,在这里我命名为“MyMVC4Web”,目录设置在了我的E盘exercise文件夹下。随后会出现模板选择框,我们选择Internet应用程序,视图引擎使用Razor,如果有需要可以创建单元测试。

【确定】之后就等待VS自动加载需要的东西。加载完成之后,【解决方案资源管理器】如下图所示。

这样,MVC4应用程序的“Hello World”程序就创建完成了。运行看一下效果。

 

 

 

二、MVC4中的一些变化

首先在项目中对Global.asax进行了优化,将原来在MVC3中使用的代码移到了【App_Start】文件夹下,而Global.asax只负责初始化。

另外还新加入了Web Api和对手机开发的支持。

 

 

三、T4模板

对于T4模板,使用MVC的开发程序员们应该都有一定的了解,而且在很早之前就有人介绍过T4模板的使用。这里不再过多介绍。给出原文地址,大家感兴趣可以看一下。另外要说一下的是,T4模板编辑器(T4 Editor)现在只支持到2010,对于2012还不能安装,这个很叫我郁闷。

 

四、使用EF CODE FIRST修改应用程序

本部分借鉴了asp.net 网站的教程内容,并使用了其中的Model、设计概念和部分代码。

首先我们在【Models】文件夹上右击选择新建类,并取名为Movie。类内容如下:

1 public class Movie
2     {
3         public int ID { get; set; }
4         public string Title { get; set; }
5         public DateTime ReleaseDate { get; set; }
6         public string Genre { get; set; }
7         public decimal Price { get; set; }
8     }

然后在项目名称上右击,新建文件夹,取名为DAL,并在DAL中创建一个用于数据库上下文的类:MovieContext。类内容如下:

1  public class MovieContext:DbContext
2     {
3         public DbSet<Movie> Movie { get; set; }
4         protected override void OnModelCreating(DbModelBuilder modelBuilder)
5         {
6             //base.OnModelCreating(modelBuilder);
7             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
8         }
9     }

这里继承了DbContext,这个基类和下面的DbSet<>都是用于Code First模式的,当然DataBase First也可以用。同时我们要重写OnModelCreating()方法,在这个方法里移除表名复数的契约。比如我们在这里Model叫Movie,如果不加modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();这句话,在数据库表中表名会被设置为Movies。这种情况下,就需要移除这个契约。

接下来我们要设置连接串,如下图:

到这里,我们要生成以下解决方案,以避免在下面的操作中找不到必要的类。

接下来右击【Controller】文件,新建控制器。在新建控制器选框中,我们这样设置:

然后点击添加。添加过程可能有点缓慢,原因是由于VS通过我们选择好的选项根据T4模板去生成我们需要的Controller和View。待一切都结束之后,VS会自动打开刚刚创建好的文件,一共有5个,分别是MoviController.cs,Index.cshtml,Create.cshtml,Detail.cshtml,Edit.cshtml和Delete.cshtml。

随后,我们打开【Views】-【Shared】文件夹下的_Layout.cshtml,这个是网站的母版页,在其中加上这样一句话:

说白了就是给加上一个链接,可以链接到我们刚刚创建好的页面上。接下来我们就可以F5预览效果了。

到这里,还有一个关键没有讲,那就是我们并没有告知系统我们使用哪个数据库连接串,它是怎么做到的呢?

原因很简单,就是因为我们的MovieContext继承了DbContext,F12导航到它的定义,你就知道是怎么一回事了。

同样我们也知道了如何使用自定义的连接串了!

2013/2/23更

只要我们使用DbContext带参构造函数就可以了,代码如下

1 private static const string Connection_str = "name=******";
2 public MovieContext() : base(Connection_str) { }

*******处指的是连接串的名称。

-------------------------------------------------------------------------------------------------

2013/2/22更新

在Movie.cs实体类中,并没有设置主键,但是在数据库中我们看到ID还是被设置成了主键。

这是因为在EF当中,以ID或者实体类名+ID(如MovieID)都会在创建时自动设置成主键,并且以int类型标记的主键会被设置成自动增长列,如果是GUID类型,则需要标记属性为[GUID]。

 

-------------------------------------------------------------------------------------------------

2013/2/25更

posted @ 2013-02-22 16:34  禁止吸烟  阅读(27822)  评论(16编辑  收藏  举报