Mar*_*ent 5 forms asp.net-mvc automapper
很多人都写过使用Automapper将域对象(模型)映射到视图模型,我发现这些模型非常有趣和有用,但我的问题是如何做相反的事情.我理解这个过程的复杂性以及为什么Automapper在这种情况下不起作用,但我必须在表单发布时做很多事情,特别是在更新时.
我有一个模型,我将它映射到视图模型,然后我向用户呈现一个表单.然后,表单被发布,因为模型可能非常复杂,我使用自定义ModelBinder来处理响应并构建一个不会直接持久化的新模型.相反,我从数据库加载原始模型并调用方法从发布的更新它而不破坏任何东西.但这变得重复,也许有更好的方法.
我见过的示例非常模型有限且天真,但在我们的应用程序中,我们现在可能有50多个表单发布方案,如此一个并且正在增长.
如果你想去另一个方向,首先创建另一个方向的地图,Mapper.Map()
接下来,您可能想要创建类型转换器(Mapper.CreateMap().ConvertUsing()),因为有时表单可能更多...字符串。
然后,您可能需要忽略或使用目标值。可以使用 ForMember(entity =>entity.Id, opt => opt.Ignore()) 或 ForMember(entity =>entity.ChildCollection, opt => opt.UseDestinationValue()) 进行配置。
最后,您将需要使用采用现有目标对象 Mapper.Map(dto,entity) 的重载。
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |