首页 新闻 会员 周边 捐助

EF ModelFirst MVC 字段验证问题。

0
[已解决问题] 解决于 2013-03-11 10:05

一个比较弱智的问题,⊙﹏⊙b汗。

如果用ModelFist的话生成的Entity都在一个Designer.cs里面,这样结合MVC的话,如何给Entity的字段加验证信息呢?

如:

[Required(ErrorMessage = "请输入您的密码")]      

 [StringLength(100, ErrorMessage = "密码的长度必须大于6个字符。", MinimumLength = 6)]       

public string Password         {   get;  set;}

难道还要对Entity再进行一次封装吗?

Gamain的主页 Gamain | 菜鸟二级 | 园豆:357
提问于:2012-12-21 10:45
< >
分享
最佳答案
0

此Model非彼Model

奖励园豆:5
Rich.T | 老鸟四级 |园豆:3440 | 2012-12-21 10:53

虽然对DDD是刚入门,但是我也感觉到“此Model非彼Model”,但是,如果的确“此Model非彼Model”的话,那么我们还需要对每一个Entity封装一个Model吗?这样的话不是和CodeFist一样了?

这样的话ModelFirst的意义何在呢?难道只是对数据库进行建模吗?

Gamain | 园豆:357 (菜鸟二级) | 2012-12-21 11:26

@Gamain: 

你概念没弄清楚,一个Entity是用于和数据库进行映射的,一个是用于客户端验证的,两个不是同一个Model

你不想多封装一遍,那你就用codefirst

Rich.T | 园豆:3440 (老鸟四级) | 2012-12-21 11:38
其他回答(2)
0

一更新就被覆盖了。

要在View和Model中共享 Entity 的话,使用 Code-first 比较方便。

Launcher | 园豆:45050 (高人七级) | 2012-12-21 11:05

恩,这个我也是知道的。

但是,如果的确想用ModelFirst的话就没有办法了吗?

还是说像我说的一样需要再做一次封装?

支持(0) 反对(0) Gamain | 园豆:357 (菜鸟二级) | 2012-12-21 11:28

@Gamain: 你可以这样:

public partial class YourEntity :  IValidatableObject

{
}

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2012-12-21 11:38
0

buddy class的方式来实现。

比如有一个Model类: Movie。那我们就可以添加一个局部类文件,局部类的内容如下:

using System.ComponentModel.DataAnnotations;

namespace Movies.Models
{
    [MetadataType(typeof(MovieMetadata))]
    public partial class Movie
    {
        class MovieMetadata
        {
            [Required(ErrorMessage="Titles are required")]
            public string Title { get; set; }

            [Required(ErrorMessage="The Price is required.")]
            [Range(5,100,ErrorMessage ="Movies cost between $5 and $100.")]
            public decimal Price { get; set; }
        }
    }
}

 

通过在这个局部类文件中添加需要的验证属性就可以了。

郭子 | 园豆:202 (菜鸟二级) | 2013-04-28 16:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册