一.寫作前提
最近正在做一個Asp.Net MVC2的Project,用到了Linq to SQL,但是對於如何在MVC2中使用 Linq to SQL 生成的強類型加注Data Annotation,我們都知道在MVC2中我們可以定義自己的Model,然後給Model 加Data Annotation,從而在View中可以實現完美的Client Validation(這些Data Annotation也我們也可 以去自己定義)。但是對於Linq to SQL 生成的強類型,我們有兩個問題,第一,應該如何實現它的Data Annotation;第二,當我們的Database結構發生改變時,我們通常需要把Linq to SQL裡相應的對象先刪 除,然後再重新映射,這時我們如何保證我們加的Data Annotation只需要進行最小的改動就可以完成對 新映射的支持?
下面我們就上面的問題進行分析和提出我們的解決方案。
二.通常MVC的做法
首先我們來做一個比較,自定義Model加Annotation,如表1所示:
圖表1:Product Class 的定義
1 public class Product
2 {
3 [DisplayName("Product Name")]
4 [Required(ErrorMessage="Product Name is Required.")]
5 [StringLength (50,ErrorMessage="Max Length of Product Name can not greater than 50 characters.")]
6 public string Name
7 {
8 get;
9 set;
10 }
11
12 [DisplayName("Product Type")]
13 [Required(ErrorMessage = "Product Type is Required.")]
14 [StringLength(20, ErrorMessage = "Max Length of Product Name can not greater than 20 characters.")]
15 public string Type
16 {
17 get;
18 set;
19 }
20 }