ASP.NET MVC3 Step By Step 學習筆記 (2)——建立簡單MVC3應用程式

來源:互聯網
上載者:User

1.選擇MVC3 Web應用程式項目

 

2.選擇空模板,視圖引擎我們選擇Razor

 

 3.項目建立後,我們能看到預設的JS都不是最新的,所以我們使用NuGet來更新項目內相關組件包

 

 4.在項目上右鍵,選擇管理Nuget程式包

 

5.Nuget會列出項目中所有可更新的組件,我們需要更新Jquery,Jquery UI和Entity Framework到最新版本,點擊安裝即可

 

6.更新後我們可以看到相關檔案已經全部到最新版本

 

 

7.環境已經搭好,現在建立一個簡單的系統,資料庫有一張使用者表Tbl_User,使用者可以登入,修改等操作,系統使用EF的新特性——資料庫遷移,我們不直接操作任何資料表的建立,全部通過EF自動產生

 

建立Tbl_User表的對應model,我們命名為Tbl_User(在自動建立的時候,類名就是資料庫表名)

我們在專案檔夾Models中建立了以下Tbl_User的Model 

public class Tbl_User    {        [DisplayName("ID")]        [Key]        public Guid ID { get; set; }         [DisplayName("使用者名稱")]        [StringLength(20, ErrorMessage = "用輸入使用者名稱")]        [Required]        public string name { get; set; }         [DisplayName("密碼")]        [StringLength(20, MinimumLength = 6, ErrorMessage = "密碼至少輸入6位")]        [DataType(DataType.Password)]        [Required]        public string pwd { get; set; }         [DisplayName("郵箱")]        [DataType(DataType.EmailAddress)]        public string email { get; set; }         [DisplayName("年齡")]        [StringLength(1)]        public int age { get; set; }         [DisplayName("建立時間")]        [Required]        public DateTime? datetime_create { get; set; }//使用可空類型,在介面綁定時,在沒有值的情況下可讓綁定後產生的文字框為空白    } 

  

通過給各個屬性添加各自的Attribute,來對屬性進行約束;在理想狀態下,我們的介面甚至不用手動添加屬性的描述性文字

在使用Attribute時,需要引入以下命名空間


using System.ComponentModel;using System.ComponentModel.DataAnnotations;
 

常用Attribute

Required:

指定為必要欄位,即指定資料庫對應的列不允許為 null 值

StringLength:

指定欄位的長度範圍,最小長度

NotMapped:

沒有對應關係,即此欄位不會在資料庫中產生對應的列

Key:

指定對應資料庫中為主鍵欄位

DisplayName:

屬性顯示的名稱

DataType:

指定要與資料欄位關聯的附加類型的名稱,有個名字為DataType的枚舉,用來指定資料類型,並會對其建立對應的驗證規則和產生方式

 

 

 

 

 

 

 

 

 

 

我們通過EF自動產生Tbl_User的相關增刪改查操作和對應介面,在專案檔夾上右鍵,建立名字為UserController的控制器(控制器名稱中的尾碼Controller不能修改,這是MVC的預設約定),選擇模板為包含讀寫和視圖的EF控制器,模型類選擇剛才我們建立的Tbl_User(需要編譯一次才能顯示),資料內容我們使用自動建立的的MvcDemoContext

 

完成後,VS會自動幫我們產生MvcDemoContext,UserController和UserController對應的視圖檔案夾View/User(包括查詢,建立,編輯,詳細,刪除頁面)

 

通過資料庫遷移自動產生資料庫,在web.config檔案中,建立SQL資料庫連接,命名為MVCDemoServices

<connectionStrings>    <add name="MVCDemoServices" connectionString="Data Source=.;Initial Catalog=MVCDemo;Persist Security Info=True;User ID=sa;Password=123456" providerName="System.Data.SqlClient" /></connectionStrings>

 

在MVCDemoContext 內容相關的建構函式中,指定資料庫連接


public class MVCDemoContext : DbContext{    public MVCDemoContext() : base("MVCDemoServices") { }    public DbSet<Tbl_User> Tbl_User { get; set; }}

 

使用PM控制台,進行資料庫遷徙

 

  • 輸入Enable-Migrations自動組建檔案夾Migrations和檔案Configuration.cs

 

  •  輸入Add-Migration CreateUser,自動在檔案夾Migrations下產生版本檔案

 

  • 輸入Update-Database自動建立或者更新資料庫

 

  •  我們進SQL Server Management Studio後探索資料庫MVCDemo已經被建立好了

 

遷移命令:

Enable-Migrations       //啟用資料庫遷移並建立檔案夾

 

Add-Migration AddAuthor // AddAuthor 是任意名,是版本戳記

 

Update-Database         //更新資料庫

 

Update-Database –TargetMigration:"xxx"  //即可回溯資料庫到指定版本

XXX為指定版本,不帶.cs,例如:201206171450182_Deletetest

 

先產生EF代碼才能使用更新資料庫


 

現在運行下系統,輸入http://localhost:3556/user,MVC預設首頁是http://localhost:3556/Home,預設訪問index頁面,我們沒有這個目錄,所以我們運行http://localhost:3556/user,會訪問到index頁面

 

 

  • 接著,建立一個新的使用者,發現當初Tbl_User的model寫錯了,年齡的欄位長度設為了1,我們返回model進行修改,去除年齡欄位的字元長度

[DisplayName("年齡")]public int age { get; set; }

 

  • 修改後,重新運行,儲存成功

 

  • 在生產的資料庫中,我們發現email欄位的類型是nvachar(max),實際email不需要這麼長,修改為100字元長度即可 
 [DisplayName("郵箱")] [DataType(DataType.EmailAddress)] [StringLength(100)]public string email { get; set; }

 

 

  • 編譯後重新運行,系統報錯

 

 

 

  • 原因是我們修改了Model中欄位的資料欄位長度,但資料庫中並沒有進行修改,所以我們需要使用EF的資料庫遷徙,進行資料庫更新
  • 開啟PM控制台,輸入Add-Migration UpdateTbl_User,產生更新檔案

 

 

 

  • 再輸入Update-Database進行資料庫更新,重新運行成功

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.