【名詞解釋】
1、MVCScaffolding:
MVC腳手架,帶來類似Ruby On Rails一樣創建代碼結構的快感。
2、EF CodeFirst:
CodeFirst是EntityFramework的一種技術手段。
傳統編程方式都是先建立數據庫,然后根據數據庫模型為應用程序建模,再進行開發;
CodeFirst從字面上理解就是代碼先行,先在程序中建立要映射到數據庫的實體結構,然后EntityFramework根據實體結構生成所對應的數據庫。
【環境准備】
1、ASP.Net MVC 3及以上版本
2、安裝Nuget
【Step By Step】
1、使用VS創建一個MVC項目,比如iFlytekDemo
2、選擇空模板
3、此時代碼結構如下:
4、選擇Tools菜單中的”Library Package Manager”的”Package Manager Console”,即打開Nuget命令窗口:
5、Package Manager Console命令窗口如下所示:
6、在PM>提示符后輸入:
Install-Package MvcScaffolding
即安裝MvcScaffolding包
7、安裝后,packages文件夾下發現多出了MvcScaffolding.1.0.9、T4Scaffolding.1.0.8、T4Scaffolding.Core.1.0.0三個文件夾
8、選擇Tools菜單中的”Library Package Manager”的”Manage NuGet Packages for Solution…”:
9、在右上方的搜索欄里輸入”sql server”,方便的找到EntityFramework.SqlServerCompact,注意看它的說明:允許SQL Server Compact 4.0被EntityFramework使用,點擊Install安裝:
10、提示是否安裝到工程中,顯然點”OK”:
11、問是否接受通行證,必須點”I Accept”:
12、安裝完畢后,發現這3個都打上了小綠勾,packages文件夾下發現多出了SqlServerCompact.4.0.8854.1文件夾:
13、此時,項目的文件結構變成了下圖所示:
14、添加ASP.Net文件夾”App_Data”,用來存放數據庫文件,這一步常常有人忘記,不做的話,后續會出錯哦,親:
15、搭架子的工作搞一段落
16、創建兩個實體類City.cs和Employee.cs
17、顯然這里開始使用CodeFirst了,那么各種DataAnnotations標簽用起來咯:
[Key]表示主鍵
[Required]表示必須項
注意命名空間System.ComponentModel.DataAnnotations的引入哦
1 using System.Collections.Generic;
2 using System.ComponentModel.DataAnnotations;
3
4 namespace iFlytekDemo.Models
5 {
6 /// <summary>
7 /// 城市實體
8 /// </summary>
9 public class City
10 {
11 /// <summary>
12 /// 城市編號
13 /// </summary>
14 [Key]
15 public int CityID { get; set; }
16
17 /// <summary>
18 /// 城市名稱
19 /// </summary>
20 [Required]
21 public string CityName { get; set; }
22
23 /// <summary>
24 /// 員工集合
25 /// </summary>
26 public virtual ICollection<Employee> Employees { get; set; }
27 }
28 }
1 using System.ComponentModel.DataAnnotations;
2
3 namespace iFlytekDemo.Models
4 {
5 /// <summary>
6 /// 員工實體
7 /// </summary>
8 public class Employee
9 {
10 /// <summary>
11 /// 員工編號
12 /// </summary>
13 [Key]
14 public int EmployeeID { get; set; }
15
16 /// <summary>
17 /// 員工姓名
18 /// </summary>
19 [Required]
20 public string EmployeeName { get; set; }
21
22 /// <summary>
23 /// 城市編號
24 /// </summary>
25 [Required]
26 public int CityID { get; set; }
27
28 /// <summary>
29 /// 城市對象
30 /// </summary>
31 public virtual City City { get; set; }
32 }
33 }
18、開始使用腳手架生成咯,我們選擇生成包括Repository文件,這樣就可以華麗麗的show一下倉儲模式,輸入:
Scaffold Controller City -Repository
Scaffold Controller Employee -Repository
19、這樣工程的代碼就算基本完畢了,生成完后的結構如下:
20、需要注意的是:比如新增員工時,要選擇城市,代碼從
“Text = Html.DisplayTextFor(_ => option).ToString(),”改為
“Text = Html.DisplayTextFor(_ => option.CityName).ToString(), ”即可,類似的地方一樣加一下就能正常顯示城市名稱。
21、為了顯示的方便,做一個入口吧,新建一個HomeController
22、對應的View文件夾中Home文件夾的Index.cshtml里加兩句
23、為了好看一點,Content文件夾下的Site.css再加幾句話
1 /* Styles for component in forms
2 -----------------------------------------------------------*/
3 table
4 {
5 border-collapse:collapse;
6 border-spacing:0;
7 border-left:1px solid #888;
8 border-top:1px solid #888;
9 background:#efefef;
10 }
11
12 th,td
13 {
14 border-right:1px solid #888;
15 border-bottom:1px solid #888;
16 padding:5px 15px;
17 }
18
19 th
20 {
21 font-weight:bold;
22 background:#ccc;
23 }
24
25 td
26 {
27 text-align: center;
28 }
24、運行一下,效果出來了:
首頁入口:
新增城市:
城市列表:
新增員工:
員工列表:
編輯員工:
添加完員工后的城市列表,有員工人數統計
總結:統計一下,核心語句加起來都沒超過10句,就實現了一個一對多關系的MVC示例。
動心了沒?
趕快動手吧,如果您在使用過程中有好的經驗,也別忘了告訴我哦。
-----------------------------------------------------------------------------------------------------------------
附:代碼下載地址