[ASP.NET]讓Entity Framework數據庫優先模式也支持自動校驗
讓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 類。
浙公網安備 33010602011771號