我遇到了将对象映射到视图并使用automapper将其映射回原始对象的问题。
我有以下结构。
var list = listOfT.Select(tmodel=> Mapper.Map<UiModel>(tmodel)).ToList();
在AutoMapperConfiguration类中的我初始化了我的automapper,如下所示:
TModel
我的适配器接收来自web服务的数据,这些数据将存储在TModel项目列表中 该视图仅显示UiModel的项目,我将执行以下映射将数据返回到视图
var list = listOfUi.Select(uimodel=> Mapper.Map<TModel>(uimodel)).ToList();
当进行所有更改后,我将列表返回给另一个适配器以将数据保存到数据库中
在这个'sqlAdapter'中我将类型timed_mutex
的项目映射回来,因为我还想要数据库中的地址属性
lock_guard
但现在我丢失了地址属性的数据。 我是否也必须通过TModel的原始列表?...
答案 0 :(得分:0)
有几种不同的方法可以解决这个问题。最简单的答案是修改你的UiModel类,使其具有地址属性。如下所示:
public class UiModel
{
public string Name{get;set;}
public string Location{get;set;}
public string address {get;set;}
}
Automapper首先尝试匹配属性名称。如果找不到匹配项,则必须修改类以使其找到匹配项或编写实现 IValueResolver 接口的类。有关详细信息,请访问https://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers