1

我有一个带有一些 FK 参考的基本表。因此,当我为更新操作检索实体时;该实体包含ICollections相关实体。我还有一个主视图模型,其中每个实体都是一个子视图模型。我的目标是使用 Automapper,例如:

mapper.Map(MainViewmodel obj,MainEntity obj); 

为此,我有一个 MappingConfiguration ,例如:

 CreateMap<MainViewModel, MainEntity>();
 CreateMap<subViewModel1, subEntity1>();
 CreateMap<subViewModel2, subEntity2>();

这给了我一个未映射的属性异常,因为ICollections没有被映射。谁能指导我处理这种情况的最佳方法?

谢谢。

4

1 回答 1

0

如果我理解正确,你有这样的课程:

class MainViewModel
{
    ICollection<SubViewModel1> SubViewModels { get;set; }
}

class SubViewModel1
{
}

class MainEntity
{
    ICollection<SubEntity1> SubEntities { get;set; }
}

class SubEntity1
{    
}

然后你应该为每个类创建规则,并且这些类的集合 automaper 会自动映射。

CreateMap<MainViewModel, MainEntity>();
CreateMap<SubViewModel1, SubEntity1>();

补充1:

  1. 试试这个方法:var mappedMainEntity = rmapper.Map<MainEntity>(MainViewmodel obj);
  2. 如果你映射MainEntityMainViewModel你需要添加 .ReverseMap() 到映射规则,像这样:

    CreateMap().ReverseMap(); CreateMap().ReverseMap();

补充2:

  1. AutoMapper 仅映射公共属性
  2. 如果映射属性有不同的名称,则需要使用显式指示如何映射这些属性。使用ForMember方法和MapFrom选项。例子
于 2017-12-21T12:44:08.583 回答