Automapper关注 - 如果我从视图中删除属性,但不从viewmodel删除?

时间:2014-01-06 02:02:53

标签: model-view-controller viewmodel automapper

我刚开始在MVC ASP.NET项目中使用AutoMapper将我的域模型映射到我的视图模型。例如

public class PersonModel
{
    public string FirstName { get; set; }

    public string NickName { get; set; }

    public string LastName { get; set; }

    public DateTime BirthDate { get; set; }
}

public class PersonViewModel
{
    public string FirstName { get; set; }

    public string NickName { get; set; }

    public string LastName { get; set; }

    public DateTime BirthDate { get; set; }
}

// Somewhere...
Mapper.CreateMap<PersonModel, PersonViewModel>();
Mapper.CreateMap<PersonViewModel, PersonModel>();

采用这种模式后,我担心将来会发生以下情况:

1)开发人员A创建人员视图,显示所有4x属性的编辑器

2)开发人员B稍后从人员视图中删除“昵称”编辑器,但留在PersonViewModel

3)因为Nickname值永远不会保存在View中,因此在Save上提交,Automapper开始为PersonViewModel中的“Nickname”映射空值 - &gt; PersonModel和覆盖数据,没有任何运行时或编译时警告。

这是一个合法的风险,你遇到它,你是如何处理它的?

1 个答案:

答案 0 :(得分:1)

您可以通过服务器端验证和自动端到端测试来缓解此类风险。

因此,在您的示例中,其中一项测试是“保存一个人时,昵称应该包含一个值&#39;。