【MVC】Model的使用

1,Model的職責:html

  Model只負責與數據處理相關的工做。數據庫

2,開發Model的基本觀念ide

  採用ORM信息訪問技術開發post

  ORM是將結構化的關係型數據,映射成面向對象模型。對於EF來講,就是關係型數據庫與.NET原生對象的轉化。ui

3,從一個簡單的.NET類別,經過EF轉換到SQL Server數據庫this

  • 默認狀況下,名稱爲Id的屬性在數據庫中建立完成以後,會被標識成主鍵,且需被設置爲Int類型,由於是值類型,不容許爲Null。
  • 同理DateTime也是值類型,不容許爲Null。
  • string爲引用類型,轉換爲數據庫類型爲nvarchar(Max),容許爲空。
  • 任何EF中的模型,均須要設置主鍵,不然會觸發異常,默認狀況下主鍵爲聲明爲id的int類型屬性。若是想設置其餘屬性爲主鍵,需添加[Attribute]屬性。
  • 若是設置的任意主鍵爲int類型,會被自動加上自動編號的屬性(即咱們常說的主鍵+1)。
  • 若是設置某一列不容許爲空,爲該列添加[Required]屬性。
  • 聲明容許NULL字段,好比DateTime默認不容許爲空,以下設置:public DateTime? CreateOn{get;set;}
  • 設置字符串長度,添加MaxLength屬性,[MaxLength(200)]
  • 聲明字段默認值,好比說添加到數據庫的時間,AddTime,取數據庫當前時間就能夠了。添加以下屬性:[DatabaseGenerated(DatabaseGeneratedOption.Computed]

4,在CodeFirst模式中,聲明Model後,而且在上下文文檔中聲明以下語句:spa

1 public DbSet<SharpL> Sharps { get; set; }

  在訪問數據庫後,表格就自動生成了,如圖:code

     

 5,打開SQL server,打開數據庫關係圖,以下:server

     

  能夠看出Memebers表中的NO字段是Guestbooks表中的外鍵,也就是member_NO字段,也就是說每個Guestbook對應於一個Member,而一個Member能夠有多個Guestbook。代碼以下:htm

複製代碼
 1     public class Member
 2     {
 3         #region 其餘字段
 4         [Key]
 5         public int NO { get; set; }
 6         [Required]
 7         [MaxLength(5)]
 8         public string Name { get; set; }
 9 
10         [MaxLength(200)]
11         public string Email { get; set; } 
12         #endregion
13 
14         public ICollection<Guestbook> GuestBooks { get; set; }
15     }
16     
17 public class Guestbook
18     {
19         #region 其餘字段
20         [Key]
21         public int NO { get; set; }
22 
23         [Required]
24         public string Content { get; set; }
25         [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
26         public DateTime? CreateOn { get; set; } 
27         #endregion
28 
29         public Member member { get; set; }
30     }
複製代碼

 

6,注意新建Model模型之後,必須編譯之後,部分功能才能使用,如在Model文件夾下,新建一個Context類,想開啓數據庫自動遷移的功能(該功能詳見Will哥MVC4 5.5),必須先進行編譯,不然在使用 Enbale-Migrations 命令時,是沒法經過的。一樣的道理是,在爲Controller添增強類型視圖時,須要先對項目進行編譯。

 

出處:http://www.cnblogs.com/SharpL/p/4592725.html

相關文章
相關標籤/搜索