一个比较弱智的问题,⊙﹏⊙b汗。
如果用ModelFist的话生成的Entity都在一个Designer.cs里面,这样结合MVC的话,如何给Entity的字段加验证信息呢?
如:
[Required(ErrorMessage = "请输入您的密码")]
[StringLength(100, ErrorMessage = "密码的长度必须大于6个字符。", MinimumLength = 6)]
public string Password { get; set;}
难道还要对Entity再进行一次封装吗?
此Model非彼Model
虽然对DDD是刚入门,但是我也感觉到“此Model非彼Model”,但是,如果的确“此Model非彼Model”的话,那么我们还需要对每一个Entity封装一个Model吗?这样的话不是和CodeFist一样了?
这样的话ModelFirst的意义何在呢?难道只是对数据库进行建模吗?
@Gamain:
你概念没弄清楚,一个Entity是用于和数据库进行映射的,一个是用于客户端验证的,两个不是同一个Model
你不想多封装一遍,那你就用codefirst
一更新就被覆盖了。
要在View和Model中共享 Entity 的话,使用 Code-first 比较方便。
恩,这个我也是知道的。
但是,如果的确想用ModelFirst的话就没有办法了吗?
还是说像我说的一样需要再做一次封装?
@Gamain: 你可以这样:
public partial class YourEntity : IValidatableObject
{
}
用 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; }
}
}
}
通过在这个局部类文件中添加需要的验证属性就可以了。