[英]Automapper child entities not mapping
我正在尝试映射包括默认子实体的父实体。
因此,我有一个promotion
对象,其中包含localisedPromotion
对象的集合
我想设置一个特定的localisedPromotion
并将其设置为我的defaultLocalisedPromotion
在我的配置中,我有:
config.CreateMap<LocalisedPromotion, LocalisedPromotionViewModel>()
.ForMember(dest => dest.LocalisedPromotionId, o => o.MapFrom(src => src.Id));
config.CreateMap<Promotion, PromotionViewModel>()
.ForMember(dest => dest.DefaultLocalisedPromotion,
o => o.MapFrom(src => src.LocalisedPromotions
.FirstOrDefault(x => x.CultureId == src.DefaultCultureId)));
因此,在我看来,这应该将LocalisedPromotionViewModel
类型的字段DefaultLocalisedPromotion
设置为
但是,该字段始终为空
有什么明显的方法可以做我想达到的目标
我写了一个单元测试,看来AutoMapper代码可以工作了。 请检查单元测试,让我知道它是否正确,或者发布更多代码(尤其是要映射的类),以便可以更改测试。
using AutoMapper;
using Xunit;
using System.Linq;
using System.Collections.Generic;
namespace AutoMapperTest
{
public class LocalisedPromotion
{
public int Id;
public int CultureId;
}
public class LocalisedPromotionViewModel
{
public int LocalisedPromotionId;
}
public class Promotion
{
public List<LocalisedPromotion> LocalisedPromotions;
public int DefaultCultureId;
}
public class PromotionViewModel
{
public LocalisedPromotionViewModel DefaultLocalisedPromotion;
}
public class AutoMapperTest
{
[Fact]
public void Test()
{
var theConfig = new MapperConfiguration(config =>
{
config.CreateMap<LocalisedPromotion, LocalisedPromotionViewModel>()
.ForMember(dest => dest.LocalisedPromotionId, o => o.MapFrom(src => src.Id));
config.CreateMap<Promotion, PromotionViewModel>()
.ForMember(dest => dest.DefaultLocalisedPromotion,
o => o.MapFrom(src => src.LocalisedPromotions
.FirstOrDefault(x => x.CultureId == src.DefaultCultureId)));
});
var promotion = new Promotion { DefaultCultureId = 3 };
promotion.LocalisedPromotions = new List<LocalisedPromotion>() { new LocalisedPromotion() { Id = 1, CultureId = 3 } };
var result = theConfig.CreateMapper().Map<Promotion, PromotionViewModel>(promotion);
Assert.NotNull(result.DefaultLocalisedPromotion);
Assert.Equal(result.DefaultLocalisedPromotion.LocalisedPromotionId, 1);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.