2012-07-31 56 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類。 希望這有助於!