【问题标题】:ASP.Net MVC Validation with Entity Framework and POCO使用实体框架和 POCO 进行 ASP.Net MVC 验证
【发布时间】:2012-07-31 01:15:51
【问题描述】:

我有一个关于使用 MVC 和 POCO 进行验证的最佳实践的问题。据我所知,最佳实践是拥有一个反映 POCO 的 ViewModel,然后在验证 ViewModel(视图模型)后使用 AutoMapper 之类的东西将 ViewModel 解析为 POCO。

这一切都很好,但我想知道从 POCO 继承和仅删除我希望在视图模型中验证的属性是否有任何问题?

POCO:

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

        public virtual string Name { get; set; }
    }

我的 ViewModel 可能如下所示:

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

更新

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

【问题讨论】:

  • 对我来说似乎很合理。我会说如果它从前到后编译和工作,那就去吧
  • 这个解决方案最终不起作用。
  • 您更新后的解决方案也是我在您的情况下所做的。也为了验证您可能想尝试fluentvalidation.codeplex.com

标签: asp.net-mvc entity-framework poco


【解决方案1】:

我喜欢下面的:

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 类具有相同的命名空间。 希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2010-11-11
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多