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


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

 

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

 

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

 

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

 

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

 

6.更新后我們可以看到相關文件已經全部到最新版本

 

 

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

 

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

我們在項目文件夾Models中創建了以下Tbl_UserModel 

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會自動幫我們生成MvcDemoContextUserControllerUserController對應的視圖文件夾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/userMVC默認主頁是http://localhost:3556/Home,默認訪問index頁面,我們沒有這個目錄,所以我們運行http://localhost:3556/user,會訪問到index頁面

 

 

  • 接着,創建一個新的用戶,發現當初Tbl_Usermodel寫錯了,年齡的字段長度設為了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進行數據庫更新,重新運行成功

 


免責聲明!

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



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