Tagクラスと、TagからTagDtoにマップする対応するTagDtoクラスがあります。Automapper - ネストされた型のAutoMapperMappingExceptionとNullReferenceException
私はEFコアを使用しているため、多対多の関係を表すMoneyItemTagというクラスへのコレクションがあります。ここで
は私のクラスです:
public abstract class MoneyItemBase
{
public int Id { get; set; }
public string ItemText { get; set; }
public decimal Amount { get; set; }
public MoneyItemType MoneyItemType { get; protected set; }
public ICollection<MoneyItemTag> MoneyItemTags { get; set; }
}
public class MoneyItemTag
{
public int MoneyItemId { get; set; }
public MoneyItemBase MoneyItem { get; set; }
public int TagId { get; set; }
public Tag Tag { get; set; }
}
public class Tag
{
public int TagId { get; set; }
public string TagName { get; set; }
public ICollection<MoneyItemTag> MoneyItemTags { get; set; }
}
[Fact]
public void Tag_TagDto_Mapping()
{
Mapper.Initialize(cfg =>
{
//cfg.AddProfile<MappingProfile>();
cfg.CreateMap<Tag, TagDto>()
.ForMember(x => x.MoneyItems, opts => opts.MapFrom(src => src.MoneyItemTags.Select(x => x.MoneyItem)));
cfg.CreateMap<MoneyItemBase, MoneyItemBaseDto>()
.ForMember(x => x.Tags, opts => opts.MapFrom(src => src.MoneyItemTags.Select(y => y.Tag.TagName).ToList()));
});
MoneyItemTag mo = new MoneyItemTag();
mo.MoneyItem = new SingleIncome() { Id = 2, ItemText = "test", Active = false, DueDate = DateTime.Now, Amount = 33 };
mo.MoneyItemId = 2;
var mit = new List<MoneyItemTag>() { mo };
Tag tag = new Tag() { TagId = 2, TagName = "test", MoneyItemTags = mit };
mo.TagId = 2;
mo.Tag = tag;
var dto = Mapper.Map<TagDto>(tag);
Assert.NotNull(dto);
そして、この関係は、いくつかのトラブルを引き起こしています。私は次のテストを実行したり、私は私のAsp.Netのコアアプリケーションにマッピングを行いたい場合、私は次の例外を取得する場合:
AutoMapper.AutoMapperMappingException : Error mapping types.
Mapping types:
Tag -> TagDto
HouseholdBook.Data.Model.Tag -> HouseholdBook.Dto.TagDto
Type Map configuration:
Tag -> TagDto
HouseholdBook.Data.Model.Tag -> HouseholdBook.Dto.TagDto
Property:
MoneyItems
---- AutoMapper.AutoMapperMappingException : Error mapping types.
Mapping types:
MoneyItemBase -> MoneyItemBaseDto
HouseholdBook.Data.Model.MoneyItemBase -> HouseholdBook.Dto.MoneyItemBaseDto
Type Map configuration:
MoneyItemBase -> MoneyItemBaseDto
HouseholdBook.Data.Model.MoneyItemBase -> HouseholdBook.Dto.MoneyItemBaseDto
Property:
Id
-------- System.NullReferenceException : Object reference not set to an
instance of an object.
ここで何が悪いのでしょうか?私は例外メッセージから私が逃しているものを見ることができません。あなたはすべてのネストされたクラスのための明示的なマッピングを作成する必要があり