我刚开始在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和覆盖数据,没有任何运行时或编译时警告。
这是一个合法的风险,你遇到它,你是如何处理它的?
答案 0 :(得分:1)
您可以通过服务器端验证和自动端到端测试来缓解此类风险。
因此,在您的示例中,其中一项测试是“保存一个人时,昵称应该包含一个值&#39;。