一.写作前提
最近正在做一个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 }