我写了很多描述,但我认为制作一张图片会让我的问题比文字更清晰

我已将此写入地图,但它会引发异常
Mapper.CreateMap<GenericStory, GenericStoryDisplayViewModel>().ForMember(
gs => gs.StoryBody,dest => dest.MapFrom( gs => gs));
Run Code Online (Sandbox Code Playgroud)
尝试将StoryWriting.Web.Models.GenericStory映射到StoryWriting.Web.ViewModels.StoryBodyViewModel.使用StoryWriting.Web.Models.GenericStory到StoryWriting.Web.ViewModels.GenericStoryDisplayViewModel目标属性的映射配置:StoryBody缺少类型映射配置或不支持的映射.抛出了"AutoMapper.AutoMapperMappingException"类型的异常.
我认为使用AutoMapper你也必须映射子类型,无论它们是否包含在另一个映射类型中?
所以在这种情况下你会添加
Mapper.CreateMap<GenericStory, StoryBodyViewlModel>();
Run Code Online (Sandbox Code Playgroud)
然后是你当前的映射.
编辑:
我已经更新了我的测试用例,甚至可以匹配您的图像,并且它正在按预期运行:
public class GenericStory
{
public string Description { get; set; }
public int Id { get; set; }
public bool IsFavoritedByCurrentUser { get; set; }
public int StoryTypeId { get; set; }
public string StoryTypeName { get; set; }
public string Html { get; set; }
public string Title { get; set; }
public int TotalFavoritedByUsers { get; set; }
}
public class GenericStoryDisplayViewModel
{
public string Description { get; set; }
public int Id { get; set; }
public int StoryTypeId { get; set; }
public string StoryTypeName { get; set; }
public StoryBodyViewModel StoryBody { get; set; }
}
public class StoryBodyViewModel
{
public string Title { get; set; }
public string Html { get; set; }
public int TotalFavoritedByUsers { get; set; }
public bool IsFavoritedByCurrentUser { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后是我的考试
private static void Main()
{
var story = new GenericStory
{
Description = "Lorem ipsum dolor sit amet,....etc",
Html = "<h1>ZOMG!</hl>\r\n\r\n<h2>BEES!</h2>",
Id = 9,
IsFavoritedByCurrentUser = true,
StoryTypeId = 1,
StoryTypeName = "ShortStory",
Title = "Test Story",
TotalFavoritedByUsers = 1
};
var vm = new GenericStoryDisplayViewModel();
Mapper.CreateMap<GenericStory, StoryBodyViewModel>();
Mapper.CreateMap<GenericStory, GenericStoryDisplayViewModel>()
.ForMember(dest => dest.StoryBody, opt => opt.MapFrom(src => src));
Mapper.Map(story, vm);
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
结果:

| 归档时间: |
|
| 查看次数: |
4237 次 |
| 最近记录: |