gpt4 book ai didi

c# - AutoMapper AutoMapper.AutoMapperMappingException : Error mapping types

转载 作者:行者123 更新时间:2023-12-04 13:21:33 24 4
gpt4 key购买 nike

Automapper 出现特殊错误

错误信息:

Mapping types:
TransportOffer -> TransportOfferDto
Model.TransportOffer -> Dto.TransportOfferDto

Type Map configuration:
TransportOffer -> TransportOfferDto
Model.TransportOffer -> Dto.TransportOfferDto

Property:
FromCity ---> AutoMapper.AutoMapperMappingException: Error mapping types.

Mapping types:
City -> CityDto
Model.City -> Dto.CityDto

Type Map configuration:
City -> CityDto
Model.City -> Dto.CityDto

Property:
Country ---> System.TypeLoadException: Method 'Add' in type 'Proxy_System.Collections.Generic.ICollection`1[[Dto.CountryDto, BusinessLogic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]__17474517' from assembly 'AutoMapper.Proxies, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005' does not have an implementation.

下面是我的实体和 DTO 以及检索数据的查询。
我正在使用 Automapper 7.0.1 和 Automapper.Attributes 6.0.1

我也尝试过自定义映射配置,错误是一样的。

这是 Automapper 自定义属性配置:
Mapper.Initialize
(
config =>
{
config.CreateMap<TransportOfferDto, TransportOffer>()
.ForMember(dest => dest.FromCity, conf => conf.MapFrom(src => src.FromCity))
.ForMember(dest => dest.FromCountry, conf => conf.MapFrom(src => src.FromCountry))
.ForMember(dest => dest.ToCity, conf => conf.MapFrom(src => src.ToCity))
.ForMember(dest => dest.ToCountry, conf => conf.MapFrom(src => src.ToCountry));
}
);

Country - entity:


public class Country : BaseEntity<Int32>
{
public string Name { get; set; }
public string Code { get; set; }
public string Capital { get; set; }
public Int32 TotalSold { get; set; }
}

CountryDto


[MapsTo(typeof(Country))]
[MapsFrom(typeof(Country))]
public class CountryDto : EntityDto<Int32>
{
public string Name { get; set; }
public string Code { get; set; }
public string Capital { get; set; }
public Int32 TotalSold { get; set; }
}

City - entity:


public class City : BaseEntity<Int32>
{
public string Name { get; set; }
public Int32 CountryID { get; set; }
public virtual Country Country { get; set; }
}

CityDto


[MapsTo(typeof(City))]
[MapsFrom(typeof(City))]
public class CityDto : EntityDto<Int32>
{
public Int32 CountryID { get; set; }
public virtual ICollection<CountryDto> Country { get; set; }

public string Name { get; set; }

}

TransportOffer - entity:


public class TransportOffer : BaseEntity<Guid>
{
public Guid TransportToken { get; set; }
public DateTime Date { get; set; }
public Int32 FromCityID { get; set; }
public virtual City FromCity { get; set; }
public Int32 FromCountryID { get; set; }
public virtual Country FromCountry { get; set; }
public Int32 ToCityID { get; set; }
public virtual City ToCity { get; set; }
public Int32 ToCountryID { get; set; }
public virtual Country ToCountry { get; set; }
}

TransportOfferDto:


[MapsTo(typeof(TransportOffer))]
[MapsFrom(typeof(TransportOffer))]
public class TransportOfferDto : EntityDto<Guid>
{
public Guid TransportToken { get; set; }
public DateTime Date { get; set; }
public Int32 FromCityID { get; set; }
public virtual CityDto FromCity { get; set; }
public Int32 FromCountryID { get; set; }
public virtual CountryDto FromCountry { get; set; }
public Int32 ToCityID { get; set; }
public virtual CityDto ToCity { get; set; }
public Int32 ToCountryID { get; set; }
public virtual Country ToCountry { get; set; }
}

Query


var query = Repository.GetAll()
.Include(x => x.FromCountry)
.Include(x => x.FromCity)
.Include(x => x.ToCountry)
.Include(x => x.ToCity)
.Where(p => p.MembershipID == input).ToList();

return ObjectMapper.Map<List<TransportOfferDto>>(query);

最佳答案

您的 CityDto 类有一个国家集合

[MapsTo(typeof(City))] [MapsFrom(typeof(City))] 
public class CityDto : EntityDto<Int32>
{
public Int32 CountryID { get; set; }
public virtual ICollection<CountryDto> Country { get; set; }
public string Name { get; set; }
}

但是您的 City 类只有一个 Country。
public class City : BaseEntity<Int32>
{
public string Name { get; set; }
public Int32 CountryID { get; set; }
public virtual Country Country { get; set; }
}

你如何映射它们?

关于c# - AutoMapper AutoMapper.AutoMapperMappingException : Error mapping types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51744998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com