c# – AutoMapper.dll中出现类型“AutoMapper.AutoMapperMapping
不知怎的,我的代码不再工作了(以前使用完全相同的代码).这就是问题:
代码 我正在尝试使用以下代码将一些对象映射到ViewModels: 组态: Mapper.CreateMap<BookcaseItem,FoundBookcaseItemViewModel>() .ForMember(x => x.Title,opt => opt.MapFrom(src => src.Book.Title)) .ForMember(x => x.Authors,opt => opt.MapFrom(src => src.Book.Authors.Select(x => x.Name).Aggregate((i,j) => i + "," + j))) .ForMember(x => x.Identifiers,opt => opt.MapFrom(src => (!string.IsNullOrEmpty(src.Book.Isbn10) ? ("ISBN10: " + src.Book.Isbn10 + "rn") : string.Empty) + (!string.IsNullOrEmpty(src.Book.Isbn13) ? ("ISBN13: " + src.Book.Isbn13) : string.Empty))) .ForMember(x => x.Pages,opt => opt.MapFrom(src => src.Book.Pages)) .ForMember(x => x.ImageUri,opt => opt.MapFrom(src => src.Book.ThumbnailUriSmall)); 用法: public ActionResult Index() { string facebookId = _accountService.GetLoggedInUserFacebookId(); IEnumerable<BookcaseItem> items = _bookcaseItemService.GetBookcaseItemsForUser(facebookId); IEnumerable<FoundBookcaseItemViewModel> viewModels = items.Select(Mapper.Map<BookcaseItem,FoundBookcaseItemViewModel>); return PartialView(viewModels); } 错误 这会导致以下错误:
调试数据 首先我确保没有配置错误调用: Mapper.AssertConfigurationIsValid(); 我已经在我的代码中设置了断点,并尝试调试它,但我无法理解它. ‘items’集合中填有数据(由Entity Framework生成的代理类),但’viewModels’集合中填满了奇怪的数据.它有一个“消息”,说:
然后有一个stacktrace属性说:
哦,最后还有一个名为“context”的属性,其中包含以下数据: 任何人都可以解释这里发生了什么,为什么我的代码不再工作?我最近对我的解决方案进行了几次更改,但是我已经将它们放回Git,所以不应该对代码有任何影响. 我的设置 > Visual Studio 12 RC 实体和ViewModel 我不知道它是否相关,但这里是映射的源类: public class BookcaseItem : Entity { public Guid Id { get; set; } public bool IsRenting { get; set; } public bool IsSwapping { get; set; } public bool IsSelling { get; set; } public decimal RentingPrice { get; set; } public decimal SellingPrice { get; set; } public string Currency { get; set; } public bool IsAvailable { get; set; } public virtual Guid BookId { get; set; } public virtual Guid UserId { get; set; } public virtual Book Book { get; set; } public virtual User User { get; set; } public BookcaseItem() { IsAvailable = true; Currency = "USD"; } } 这是映射的目标类: public class FoundBookcaseItemViewModel { public Guid Id { get; set; } public bool IsRenting { get; set; } public bool IsSwapping { get; set; } public bool IsSelling { get; set; } public decimal RentingPrice { get; set; } public decimal SellingPrice { get; set; } public string Title { get; set; } public string Authors { get; set; } public string Identifiers { get; set; } public int Pages { get; set; } public string ImageUri { get; set; } } 解决方法
似乎映射Authors属性有问题.如果Authors序列为空或为空,则此聚合调用将抛出异常.
.ForMember(x => x.Authors," + j))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |