讓Entity Framework資料庫優先也支援自動校正
羅朝輝 (http://kesalin.cnblogs.com/)
本文遵循“署名-非商業用途-保持一致”創作公用協議 ASP.NET MVC 確實比以前的ASP編程模式 VIEW-BLL-DAL三層架構長進了不少,再加上Entity Framework利器,開發Web應用非常容易。要結合這兩者,使用 Code First 模式非常好用,這樣我們就非常方便在模型的欄位上加上許多 System.ComponentModel.DataAnnotations 來對欄位進列欄位校正。但如果使用 Database First 模式,就稍微有點不那麼方便了,但是辦法還是有的,使用 partial 類是一種解法。 範例程式碼示範了 Database First 模式下,使用兩個資料模型,在其中使用 partial 類來實現對欄位的自動校正,並且將資料模型封裝帶單獨的 dll 中。示範結果如下:
上面 student 和 school 頁面的資料來自兩個的資料庫,而名稱長度的校正是在相應的 partial 類欄位上加 System.ComponentModel.DataAnnotations 限定實現的。
工程結構:
示範代碼很簡單,在這裡就只列出 student.cs 的實現:
using System;using System.ComponentModel.DataAnnotations;namespace Student.DAL{ public partial class student { [Required] [StringLength(8, ErrorMessage = "{0} 至少應包含6個字元。", MinimumLength = 6)] [Display(Name = "名稱")] public string MName { get { return Name; } set { Name = value; } } [Required] [Display(Name = "Age")] public Int64 MAge { get { return Age; } set { Age = value; } } }}
從上面的代碼可以看出,partial 類對 EF 自動產生的 Entity 類進行了簡單的封裝,雖然這樣有冗餘,但為了能實現自動檢驗,也就容忍了。不知還有更好的辦法沒有,前提是不要修改 EF 自動產生的 Entity 類。