在MVC中自建的实体类可以在Model中直接进行数据验证,例如
[DisplayName("会员帐号")]
[Required(ErrorMessage = "请输入 Email 地址")]
[Description("我们直接以 Email 当成会员登陆录账号")]
[MaxLength(250, ErrorMessage = "Email地址长度无法超过250个字符")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
但是要是用LINQ To SQL自动生成实体类模型之后,还能不能使用这种方法?
------解决思路----------------------
通常将MVC自建的类称为ViewModel
而LINQ To SQL自动生成实体类模型称....Dto?
反正习惯分开,再用AutoMapper转换
另外也是可以合二为一的
就是
[MetadataType(typeof(ContactMD))]//ContactMD是自动生成实体类模型
public partial class Contacts
{
public class ContactMD//不要在乎是内部类,Contact只要ContactMD的附加元数据信息
{
[ScaffoldColumn(false)]
public object Id { get; set; }
[Required()]
public object FirstName { get; set; }
[Required()]
public object LastName { get; set; }
[RegularExpression(@"^\d{3}-?\d{3}-?\d{4}$",ErrorMessage="只能是数字或-")]
public object Phone { get; set; }
[Required()]
[DataType(DataType.EmailAddress)]
[RegularExpression(@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$",ErrorMessage="请输入邮箱!")]
public object Email { get; set; }
}
}
另外为什么要用Linq to Sql 而不用EntityFramework呢
------解决思路----------------------
应该将Entity和ViewModel分开。不然MVC中的M和V就缩减为一个了。