結合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更


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM