2012-07-31 58 views
1

我有一个关于使用MVC和POCO进行验证的最佳实践的问题。从我所知道的最佳做法是有一个ViewModel镜像POCO,然后在视图模型(视图模型)经过验证之后,使用类似AutoMapper的方法将ViewModel解析为POCO。实体框架和POCO的ASP.Net MVC验证

这一切都很好,但我想知道是否有任何问题从POCO继承,并删除了只想查看模型中验证的属性?

POCO:

public partial class Sector 
    { 
     public virtual int SectorId { get; set; } 

     public virtual string Name { get; set; } 
    } 

我的视图模型可能是这样的:

public class SectorDTO : Sector 
    { 
     [Required] 
     [StringLength(10)] 
     public override string Name {get; set;} 
    } 

UPDATE

该解决方案最终没有工作,主要是由于这样我的业务层和数据层的设置。我的解决方案是创建一个包含所有验证的DTO的ViewModel,然后使用AutoMapper将对象更改回POCO类型。

+0

似乎对我来说很合理。我会说,如果它从头到尾进行编译和工作,那就试试吧 – 2012-07-31 01:58:23

+0

该解决方案最终无法正常工作。 – 2012-07-31 02:33:02

+1

您的更新解决方案是我在您的案例中也做的。另外为了验证你可能想尝试http://fluentvalidation.codeplex.com/。 – cubski 2012-07-31 02:54:00

回答

0

我不喜欢下面:

public partial class SectorMetaData 
{ 
    [Required(ErrorMessage="Required Filed")] 
    public int SectorId{ get; set;} 
    [Required(ErrorMessage="Required Filed")] 
    public string Name{get; set;} 

} 

[MetadataType(typeof(SectorMetaData))] 
public partial class Sector 
{ 
    public int SectorId{ get; set;} 
    public string Name{get; set;} 
} 

这个类应该是相同的命名空间POCO类。 希望这有助于!