当前位置: 代码迷 >> .NET Framework >> asp.net MVC中自建实体类与LINQ To SQL自动生成的实体类有关问题
  详细解决方案

asp.net MVC中自建实体类与LINQ To SQL自动生成的实体类有关问题

热度:64   发布时间:2016-05-01 23:30:53.0
asp.net MVC中自建实体类与LINQ To SQL自动生成的实体类问题
在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就缩减为一个了。
  相关解决方案