我有两个数据模型,一个用于数据库,另一个用于视图模型,如
public class ModelA{
string name {get;set;}
}
public class ModelB{
ModelA Parent;
ModelB(ModelA parent){
Parent = parent;
}
}ViewModel模型是相同的
public class ViewModelA{
string name {get;set;}
}
public class ViewModelB{
ViewModelA Parent;
IMapper map;
ViewModelB(ViewModelA parent, IMapper _map){
Parent = parent;
map = _map;
}
}我试图让automapper在ViewModelB和Model B参数内映射父对象,但我尝试的一切都失败了,或者我只能创建父对象的新实例(使用ConstructUsing),而不能映射构造函数中的实例。
这是我目前的个人资料。
public ModelBProfile:Profile{
CreateMap<ModelB, ViewModelB>()
.ForMember(m => m.Parent, opt => opt.MapFrom(p => p.Parent));
}我一直在使用一个统一容器,WPF和Prism。当ViewModel A的视图被导航到时,统一成功地注入父类(其中有一个实例)。我还使用联合来存储AutoMapper实例。然后,我需要在视图模型中对对象进行映射。
发布于 2017-04-03 14:41:59
我不得不稍微更改我的视图模型,并从构造函数中移除父模型。
我解决了映射程序的问题,在我的配置文件中包含了如下的构造:
public Profile()
{
CreateMap<ModelB, ViewModelB>()
.PreserveReferences().ConstructUsing((a, context) => new ViewModelB(context.Mapper))
.ForMember(c => c.Parent, opt => opt.MapFrom(s => s.Parent))
c.Players));
}https://stackoverflow.com/questions/43136015
复制相似问题