4 – 創建更加復雜的數據模型
在前面的課程中,你已經創建了一個簡單的由三個實體組成的數據模型。在這個課程中,你將要增加更多的實體,以及關系,使用數據標注特性來控制模型類的行為。
在完成的時候,實體類表示的完整數據模型如下所示:
4-1 使用特性控制格式、驗證以及數據庫映射
在這一節中,你將會看到如何使用特性來控制數據模型的格式化、驗證以及數據庫映射。然後在後繼的節中,將要通過為已經創建的類、新創建的類增加特性,來創建完整的 School 數據模型。
對於學生的注冊日期來說,雖然你只關心注冊的日期,但是現在的頁面在日期之後還顯示了時間。通過使用數據標注特性,可以通過一點代碼就可以在所有的地方修補這個問題。看一下示例,你就可以為 Student 類的 EnrollmentDate 屬性增加一個特性了。
在 Models\Student.cs ,在開始部分為命名空間 System.ComponentModel.DataAnnotations 增加一個 using 語句,然後在 EnrollmentDate 屬性上增加一個 DisplayFormat 的特性。如下所示:
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace ContosoUniversity.Models { public class Student { public int StudentID { get; set; } public string LastName { get; set; } public string FirstMidName { get; set; } [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)] public DateTime EnrollmentDate { get; set; } public virtual ICollection<Enrollment> Enrollments { get; set; } } }
格式化串指定了在顯示這個屬性的時候僅僅使用短日期格式。ApplyFormatInEditMode 指定即使在將這個屬性的值顯示在文本框中進行編輯的時候也應用這個特性。( 有些字段不需要這些特殊設置,比如,在文本框中編輯貨幣的時候,就不會希望出現貨幣符號 )。
再次運行程序,你會注意到注冊時間不再是長日期格式了,如果你查看其他的學生頁面也會看到同樣的結果。