【MVC】Model的使用


1,Model的職責:

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

2,開發Model的基本觀念

  采用ORM信息訪問技術開發

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

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

  • 默認情況下,名稱為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后,並且在上下文文檔中聲明如下語句:

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

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

     

 5,打開SQL server,打開數據庫關系圖,如下:

     

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

復制代碼
 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


免責聲明!

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



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